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

#ifndef _GLAPI_TMP_H_
#define _GLAPI_TMP_H_
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"

void APIENTRY shared_dispatch_stub_0(GLuint list, GLenum mode);
void APIENTRY shared_dispatch_stub_1(void);
void APIENTRY shared_dispatch_stub_2(GLuint list);
void APIENTRY shared_dispatch_stub_3(GLsizei n, GLenum type, const GLvoid *lists);
void APIENTRY shared_dispatch_stub_4(GLuint list, GLsizei range);
GLuint APIENTRY shared_dispatch_stub_5(GLsizei range);
void APIENTRY shared_dispatch_stub_6(GLuint base);
void APIENTRY shared_dispatch_stub_7(GLenum mode);
void APIENTRY shared_dispatch_stub_8(GLsizei width, GLsizei height, GLfloat xorig, GLfloat yorig, GLfloat xmove, GLfloat ymove, const GLubyte *bitmap);
void APIENTRY shared_dispatch_stub_9(GLbyte red, GLbyte green, GLbyte blue);
void APIENTRY shared_dispatch_stub_10(const GLbyte *v);
void APIENTRY shared_dispatch_stub_11(GLdouble red, GLdouble green, GLdouble blue);
void APIENTRY shared_dispatch_stub_12(const GLdouble *v);
void APIENTRY shared_dispatch_stub_13(GLfloat red, GLfloat green, GLfloat blue);
void APIENTRY shared_dispatch_stub_14(const GLfloat *v);
void APIENTRY shared_dispatch_stub_15(GLint red, GLint green, GLint blue);
void APIENTRY shared_dispatch_stub_16(const GLint *v);
void APIENTRY shared_dispatch_stub_17(GLshort red, GLshort green, GLshort blue);
void APIENTRY shared_dispatch_stub_18(const GLshort *v);
void APIENTRY shared_dispatch_stub_19(GLubyte red, GLubyte green, GLubyte blue);
void APIENTRY shared_dispatch_stub_20(const GLubyte *v);
void APIENTRY shared_dispatch_stub_21(GLuint red, GLuint green, GLuint blue);
void APIENTRY shared_dispatch_stub_22(const GLuint *v);
void APIENTRY shared_dispatch_stub_23(GLushort red, GLushort green, GLushort blue);
void APIENTRY shared_dispatch_stub_24(const GLushort *v);
void APIENTRY shared_dispatch_stub_25(GLbyte red, GLbyte green, GLbyte blue, GLbyte alpha);
void APIENTRY shared_dispatch_stub_26(const GLbyte *v);
void APIENTRY shared_dispatch_stub_27(GLdouble red, GLdouble green, GLdouble blue, GLdouble alpha);
void APIENTRY shared_dispatch_stub_28(const GLdouble *v);
void APIENTRY shared_dispatch_stub_29(GLfloat red, GLfloat green, GLfloat blue, GLfloat alpha);
void APIENTRY shared_dispatch_stub_30(const GLfloat *v);
void APIENTRY shared_dispatch_stub_31(GLint red, GLint green, GLint blue, GLint alpha);
void APIENTRY shared_dispatch_stub_32(const GLint *v);
void APIENTRY shared_dispatch_stub_33(GLshort red, GLshort green, GLshort blue, GLshort alpha);
void APIENTRY shared_dispatch_stub_34(const GLshort *v);
void APIENTRY shared_dispatch_stub_35(GLubyte red, GLubyte green, GLubyte blue, GLubyte alpha);
void APIENTRY shared_dispatch_stub_36(const GLubyte *v);
void APIENTRY shared_dispatch_stub_37(GLuint red, GLuint green, GLuint blue, GLuint alpha);
void APIENTRY shared_dispatch_stub_38(const GLuint *v);
void APIENTRY shared_dispatch_stub_39(GLushort red, GLushort green, GLushort blue, GLushort alpha);
void APIENTRY shared_dispatch_stub_40(const GLushort *v);
void APIENTRY shared_dispatch_stub_41(GLboolean flag);
void APIENTRY shared_dispatch_stub_42(const GLboolean *flag);
void APIENTRY shared_dispatch_stub_43(void);
void APIENTRY shared_dispatch_stub_44(GLdouble c);
void APIENTRY shared_dispatch_stub_45(const GLdouble *c);
void APIENTRY shared_dispatch_stub_46(GLfloat c);
void APIENTRY shared_dispatch_stub_47(const GLfloat *c);
void APIENTRY shared_dispatch_stub_48(GLint c);
void APIENTRY shared_dispatch_stub_49(const GLint *c);
void APIENTRY shared_dispatch_stub_50(GLshort c);
void APIENTRY shared_dispatch_stub_51(const GLshort *c);
void APIENTRY shared_dispatch_stub_52(GLbyte nx, GLbyte ny, GLbyte nz);
void APIENTRY shared_dispatch_stub_53(const GLbyte *v);
void APIENTRY shared_dispatch_stub_54(GLdouble nx, GLdouble ny, GLdouble nz);
void APIENTRY shared_dispatch_stub_55(const GLdouble *v);
void APIENTRY shared_dispatch_stub_56(GLfloat nx, GLfloat ny, GLfloat nz);
void APIENTRY shared_dispatch_stub_57(const GLfloat *v);
void APIENTRY shared_dispatch_stub_58(GLint nx, GLint ny, GLint nz);
void APIENTRY shared_dispatch_stub_59(const GLint *v);
void APIENTRY shared_dispatch_stub_60(GLshort nx, GLshort ny, GLshort nz);
void APIENTRY shared_dispatch_stub_61(const GLshort *v);
void APIENTRY shared_dispatch_stub_62(GLdouble x, GLdouble y);
void APIENTRY shared_dispatch_stub_63(const GLdouble *v);
void APIENTRY shared_dispatch_stub_64(GLfloat x, GLfloat y);
void APIENTRY shared_dispatch_stub_65(const GLfloat *v);
void APIENTRY shared_dispatch_stub_66(GLint x, GLint y);
void APIENTRY shared_dispatch_stub_67(const GLint *v);
void APIENTRY shared_dispatch_stub_68(GLshort x, GLshort y);
void APIENTRY shared_dispatch_stub_69(const GLshort *v);
void APIENTRY shared_dispatch_stub_70(GLdouble x, GLdouble y, GLdouble z);
void APIENTRY shared_dispatch_stub_71(const GLdouble *v);
void APIENTRY shared_dispatch_stub_72(GLfloat x, GLfloat y, GLfloat z);
void APIENTRY shared_dispatch_stub_73(const GLfloat *v);
void APIENTRY shared_dispatch_stub_74(GLint x, GLint y, GLint z);
void APIENTRY shared_dispatch_stub_75(const GLint *v);
void APIENTRY shared_dispatch_stub_76(GLshort x, GLshort y, GLshort z);
void APIENTRY shared_dispatch_stub_77(const GLshort *v);
void APIENTRY shared_dispatch_stub_78(GLdouble x, GLdouble y, GLdouble z, GLdouble w);
void APIENTRY shared_dispatch_stub_79(const GLdouble *v);
void APIENTRY shared_dispatch_stub_80(GLfloat x, GLfloat y, GLfloat z, GLfloat w);
void APIENTRY shared_dispatch_stub_81(const GLfloat *v);
void APIENTRY shared_dispatch_stub_82(GLint x, GLint y, GLint z, GLint w);
void APIENTRY shared_dispatch_stub_83(const GLint *v);
void APIENTRY shared_dispatch_stub_84(GLshort x, GLshort y, GLshort z, GLshort w);
void APIENTRY shared_dispatch_stub_85(const GLshort *v);
void APIENTRY shared_dispatch_stub_86(GLdouble x1, GLdouble y1, GLdouble x2, GLdouble y2);
void APIENTRY shared_dispatch_stub_87(const GLdouble *v1, const GLdouble *v2);
void APIENTRY shared_dispatch_stub_88(GLfloat x1, GLfloat y1, GLfloat x2, GLfloat y2);
void APIENTRY shared_dispatch_stub_89(const GLfloat *v1, const GLfloat *v2);
void APIENTRY shared_dispatch_stub_90(GLint x1, GLint y1, GLint x2, GLint y2);
void APIENTRY shared_dispatch_stub_91(const GLint *v1, const GLint *v2);
void APIENTRY shared_dispatch_stub_92(GLshort x1, GLshort y1, GLshort x2, GLshort y2);
void APIENTRY shared_dispatch_stub_93(const GLshort *v1, const GLshort *v2);
void APIENTRY shared_dispatch_stub_94(GLdouble s);
void APIENTRY shared_dispatch_stub_95(const GLdouble *v);
void APIENTRY shared_dispatch_stub_96(GLfloat s);
void APIENTRY shared_dispatch_stub_97(const GLfloat *v);
void APIENTRY shared_dispatch_stub_98(GLint s);
void APIENTRY shared_dispatch_stub_99(const GLint *v);
void APIENTRY shared_dispatch_stub_100(GLshort s);
void APIENTRY shared_dispatch_stub_101(const GLshort *v);
void APIENTRY shared_dispatch_stub_102(GLdouble s, GLdouble t);
void APIENTRY shared_dispatch_stub_103(const GLdouble *v);
void APIENTRY shared_dispatch_stub_104(GLfloat s, GLfloat t);
void APIENTRY shared_dispatch_stub_105(const GLfloat *v);
void APIENTRY shared_dispatch_stub_106(GLint s, GLint t);
void APIENTRY shared_dispatch_stub_107(const GLint *v);
void APIENTRY shared_dispatch_stub_108(GLshort s, GLshort t);
void APIENTRY shared_dispatch_stub_109(const GLshort *v);
void APIENTRY shared_dispatch_stub_110(GLdouble s, GLdouble t, GLdouble r);
void APIENTRY shared_dispatch_stub_111(const GLdouble *v);
void APIENTRY shared_dispatch_stub_112(GLfloat s, GLfloat t, GLfloat r);
void APIENTRY shared_dispatch_stub_113(const GLfloat *v);
void APIENTRY shared_dispatch_stub_114(GLint s, GLint t, GLint r);
void APIENTRY shared_dispatch_stub_115(const GLint *v);
void APIENTRY shared_dispatch_stub_116(GLshort s, GLshort t, GLshort r);
void APIENTRY shared_dispatch_stub_117(const GLshort *v);
void APIENTRY shared_dispatch_stub_118(GLdouble s, GLdouble t, GLdouble r, GLdouble q);
void APIENTRY shared_dispatch_stub_119(const GLdouble *v);
void APIENTRY shared_dispatch_stub_120(GLfloat s, GLfloat t, GLfloat r, GLfloat q);
void APIENTRY shared_dispatch_stub_121(const GLfloat *v);
void APIENTRY shared_dispatch_stub_122(GLint s, GLint t, GLint r, GLint q);
void APIENTRY shared_dispatch_stub_123(const GLint *v);
void APIENTRY shared_dispatch_stub_124(GLshort s, GLshort t, GLshort r, GLshort q);
void APIENTRY shared_dispatch_stub_125(const GLshort *v);
void APIENTRY shared_dispatch_stub_126(GLdouble x, GLdouble y);
void APIENTRY shared_dispatch_stub_127(const GLdouble *v);
void APIENTRY shared_dispatch_stub_128(GLfloat x, GLfloat y);
void APIENTRY shared_dispatch_stub_129(const GLfloat *v);
void APIENTRY shared_dispatch_stub_130(GLint x, GLint y);
void APIENTRY shared_dispatch_stub_131(const GLint *v);
void APIENTRY shared_dispatch_stub_132(GLshort x, GLshort y);
void APIENTRY shared_dispatch_stub_133(const GLshort *v);
void APIENTRY shared_dispatch_stub_134(GLdouble x, GLdouble y, GLdouble z);
void APIENTRY shared_dispatch_stub_135(const GLdouble *v);
void APIENTRY shared_dispatch_stub_136(GLfloat x, GLfloat y, GLfloat z);
void APIENTRY shared_dispatch_stub_137(const GLfloat *v);
void APIENTRY shared_dispatch_stub_138(GLint x, GLint y, GLint z);
void APIENTRY shared_dispatch_stub_139(const GLint *v);
void APIENTRY shared_dispatch_stub_140(GLshort x, GLshort y, GLshort z);
void APIENTRY shared_dispatch_stub_141(const GLshort *v);
void APIENTRY shared_dispatch_stub_142(GLdouble x, GLdouble y, GLdouble z, GLdouble w);
void APIENTRY shared_dispatch_stub_143(const GLdouble *v);
void APIENTRY shared_dispatch_stub_144(GLfloat x, GLfloat y, GLfloat z, GLfloat w);
void APIENTRY shared_dispatch_stub_145(const GLfloat *v);
void APIENTRY shared_dispatch_stub_146(GLint x, GLint y, GLint z, GLint w);
void APIENTRY shared_dispatch_stub_147(const GLint *v);
void APIENTRY shared_dispatch_stub_148(GLshort x, GLshort y, GLshort z, GLshort w);
void APIENTRY shared_dispatch_stub_149(const GLshort *v);
void APIENTRY shared_dispatch_stub_150(GLenum plane, const GLdouble *equation);
void APIENTRY shared_dispatch_stub_151(GLenum face, GLenum mode);
void APIENTRY shared_dispatch_stub_152(GLenum mode);
void APIENTRY shared_dispatch_stub_153(GLenum pname, GLfloat param);
void APIENTRY shared_dispatch_stub_154(GLenum pname, const GLfloat *params);
void APIENTRY shared_dispatch_stub_155(GLenum pname, GLint param);
void APIENTRY shared_dispatch_stub_156(GLenum pname, const GLint *params);
void APIENTRY shared_dispatch_stub_157(GLenum mode);
void APIENTRY shared_dispatch_stub_158(GLenum target, GLenum mode);
void APIENTRY shared_dispatch_stub_159(GLenum light, GLenum pname, GLfloat param);
void APIENTRY shared_dispatch_stub_160(GLenum light, GLenum pname, const GLfloat *params);
void APIENTRY shared_dispatch_stub_161(GLenum light, GLenum pname, GLint param);
void APIENTRY shared_dispatch_stub_162(GLenum light, GLenum pname, const GLint *params);
void APIENTRY shared_dispatch_stub_163(GLenum pname, GLfloat param);
void APIENTRY shared_dispatch_stub_164(GLenum pname, const GLfloat *params);
void APIENTRY shared_dispatch_stub_165(GLenum pname, GLint param);
void APIENTRY shared_dispatch_stub_166(GLenum pname, const GLint *params);
void APIENTRY shared_dispatch_stub_167(GLint factor, GLushort pattern);
void APIENTRY shared_dispatch_stub_168(GLfloat width);
void APIENTRY shared_dispatch_stub_169(GLenum face, GLenum pname, GLfloat param);
void APIENTRY shared_dispatch_stub_170(GLenum face, GLenum pname, const GLfloat *params);
void APIENTRY shared_dispatch_stub_171(GLenum face, GLenum pname, GLint param);
void APIENTRY shared_dispatch_stub_172(GLenum face, GLenum pname, const GLint *params);
void APIENTRY shared_dispatch_stub_173(GLfloat size);
void APIENTRY shared_dispatch_stub_174(GLenum face, GLenum mode);
void APIENTRY shared_dispatch_stub_175(const GLubyte *mask);
void APIENTRY shared_dispatch_stub_176(GLint x, GLint y, GLsizei width, GLsizei height);
void APIENTRY shared_dispatch_stub_177(GLenum mode);
void APIENTRY shared_dispatch_stub_178(GLenum target, GLenum pname, GLfloat param);
void APIENTRY shared_dispatch_stub_179(GLenum target, GLenum pname, const GLfloat *params);
void APIENTRY shared_dispatch_stub_180(GLenum target, GLenum pname, GLint param);
void APIENTRY shared_dispatch_stub_181(GLenum target, GLenum pname, const GLint *params);
void APIENTRY shared_dispatch_stub_182(GLenum target, GLint level, GLint internalformat, GLsizei width, GLint border, GLenum format, GLenum type, const GLvoid *pixels);
void APIENTRY shared_dispatch_stub_183(GLenum target, GLint level, GLint internalformat, GLsizei width, GLsizei height, GLint border, GLenum format, GLenum type, const GLvoid *pixels);
void APIENTRY shared_dispatch_stub_184(GLenum target, GLenum pname, GLfloat param);
void APIENTRY shared_dispatch_stub_185(GLenum target, GLenum pname, const GLfloat *params);
void APIENTRY shared_dispatch_stub_186(GLenum target, GLenum pname, GLint param);
void APIENTRY shared_dispatch_stub_187(GLenum target, GLenum pname, const GLint *params);
void APIENTRY shared_dispatch_stub_188(GLenum coord, GLenum pname, GLdouble param);
void APIENTRY shared_dispatch_stub_189(GLenum coord, GLenum pname, const GLdouble *params);
void APIENTRY shared_dispatch_stub_190(GLenum coord, GLenum pname, GLfloat param);
void APIENTRY shared_dispatch_stub_191(GLenum coord, GLenum pname, const GLfloat *params);
void APIENTRY shared_dispatch_stub_192(GLenum coord, GLenum pname, GLint param);
void APIENTRY shared_dispatch_stub_193(GLenum coord, GLenum pname, const GLint *params);
void APIENTRY shared_dispatch_stub_194(GLsizei size, GLenum type, GLfloat *buffer);
void APIENTRY shared_dispatch_stub_195(GLsizei size, GLuint *buffer);
GLint APIENTRY shared_dispatch_stub_196(GLenum mode);
void APIENTRY shared_dispatch_stub_197(void);
void APIENTRY shared_dispatch_stub_198(GLuint name);
void APIENTRY shared_dispatch_stub_199(GLfloat token);
void APIENTRY shared_dispatch_stub_200(void);
void APIENTRY shared_dispatch_stub_201(GLuint name);
void APIENTRY shared_dispatch_stub_202(GLenum mode);
void APIENTRY shared_dispatch_stub_203(GLbitfield mask);
void APIENTRY shared_dispatch_stub_204(GLfloat red, GLfloat green, GLfloat blue, GLfloat alpha);
void APIENTRY shared_dispatch_stub_205(GLfloat c);
void APIENTRY shared_dispatch_stub_206(GLclampf red, GLclampf green, GLclampf blue, GLclampf alpha);
void APIENTRY shared_dispatch_stub_207(GLint s);
void APIENTRY shared_dispatch_stub_208(GLclampd depth);
void APIENTRY shared_dispatch_stub_209(GLuint mask);
void APIENTRY shared_dispatch_stub_210(GLboolean red, GLboolean green, GLboolean blue, GLboolean alpha);
void APIENTRY shared_dispatch_stub_211(GLboolean flag);
void APIENTRY shared_dispatch_stub_212(GLuint mask);
void APIENTRY shared_dispatch_stub_213(GLenum op, GLfloat value);
void APIENTRY shared_dispatch_stub_214(GLenum cap);
void APIENTRY shared_dispatch_stub_215(GLenum cap);
void APIENTRY shared_dispatch_stub_216(void);
void APIENTRY shared_dispatch_stub_217(void);
void APIENTRY shared_dispatch_stub_218(void);
void APIENTRY shared_dispatch_stub_219(GLbitfield mask);
void APIENTRY shared_dispatch_stub_220(GLenum target, GLdouble u1, GLdouble u2, GLint stride, GLint order, const GLdouble *points);
void APIENTRY shared_dispatch_stub_221(GLenum target, GLfloat u1, GLfloat u2, GLint stride, GLint order, const GLfloat *points);
void APIENTRY shared_dispatch_stub_222(GLenum target, GLdouble u1, GLdouble u2, GLint ustride, GLint uorder, GLdouble v1, GLdouble v2, GLint vstride, GLint vorder, const GLdouble *points);
void APIENTRY shared_dispatch_stub_223(GLenum target, GLfloat u1, GLfloat u2, GLint ustride, GLint uorder, GLfloat v1, GLfloat v2, GLint vstride, GLint vorder, const GLfloat *points);
void APIENTRY shared_dispatch_stub_224(GLint un, GLdouble u1, GLdouble u2);
void APIENTRY shared_dispatch_stub_225(GLint un, GLfloat u1, GLfloat u2);
void APIENTRY shared_dispatch_stub_226(GLint un, GLdouble u1, GLdouble u2, GLint vn, GLdouble v1, GLdouble v2);
void APIENTRY shared_dispatch_stub_227(GLint un, GLfloat u1, GLfloat u2, GLint vn, GLfloat v1, GLfloat v2);
void APIENTRY shared_dispatch_stub_228(GLdouble u);
void APIENTRY shared_dispatch_stub_229(const GLdouble *u);
void APIENTRY shared_dispatch_stub_230(GLfloat u);
void APIENTRY shared_dispatch_stub_231(const GLfloat *u);
void APIENTRY shared_dispatch_stub_232(GLdouble u, GLdouble v);
void APIENTRY shared_dispatch_stub_233(const GLdouble *u);
void APIENTRY shared_dispatch_stub_234(GLfloat u, GLfloat v);
void APIENTRY shared_dispatch_stub_235(const GLfloat *u);
void APIENTRY shared_dispatch_stub_236(GLenum mode, GLint i1, GLint i2);
void APIENTRY shared_dispatch_stub_237(GLint i);
void APIENTRY shared_dispatch_stub_238(GLenum mode, GLint i1, GLint i2, GLint j1, GLint j2);
void APIENTRY shared_dispatch_stub_239(GLint i, GLint j);
void APIENTRY shared_dispatch_stub_240(GLenum func, GLclampf ref);
void APIENTRY shared_dispatch_stub_241(GLenum sfactor, GLenum dfactor);
void APIENTRY shared_dispatch_stub_242(GLenum opcode);
void APIENTRY shared_dispatch_stub_243(GLenum func, GLint ref, GLuint mask);
void APIENTRY shared_dispatch_stub_244(GLenum fail, GLenum zfail, GLenum zpass);
void APIENTRY shared_dispatch_stub_245(GLenum func);
void APIENTRY shared_dispatch_stub_246(GLfloat xfactor, GLfloat yfactor);
void APIENTRY shared_dispatch_stub_247(GLenum pname, GLfloat param);
void APIENTRY shared_dispatch_stub_248(GLenum pname, GLint param);
void APIENTRY shared_dispatch_stub_249(GLenum pname, GLfloat param);
void APIENTRY shared_dispatch_stub_250(GLenum pname, GLint param);
void APIENTRY shared_dispatch_stub_251(GLenum map, GLsizei mapsize, const GLfloat *values);
void APIENTRY shared_dispatch_stub_252(GLenum map, GLsizei mapsize, const GLuint *values);
void APIENTRY shared_dispatch_stub_253(GLenum map, GLsizei mapsize, const GLushort *values);
void APIENTRY shared_dispatch_stub_254(GLenum mode);
void APIENTRY shared_dispatch_stub_255(GLint x, GLint y, GLsizei width, GLsizei height, GLenum type);
void APIENTRY shared_dispatch_stub_256(GLint x, GLint y, GLsizei width, GLsizei height, GLenum format, GLenum type, GLvoid *pixels);
void APIENTRY shared_dispatch_stub_257(GLsizei width, GLsizei height, GLenum format, GLenum type, const GLvoid *pixels);
void APIENTRY shared_dispatch_stub_258(GLenum pname, GLboolean *params);
void APIENTRY shared_dispatch_stub_259(GLenum plane, GLdouble *equation);
void APIENTRY shared_dispatch_stub_260(GLenum pname, GLdouble *params);
GLenum APIENTRY shared_dispatch_stub_261(void);
void APIENTRY shared_dispatch_stub_262(GLenum pname, GLfloat *params);
void APIENTRY shared_dispatch_stub_263(GLenum pname, GLint *params);
void APIENTRY shared_dispatch_stub_264(GLenum light, GLenum pname, GLfloat *params);
void APIENTRY shared_dispatch_stub_265(GLenum light, GLenum pname, GLint *params);
void APIENTRY shared_dispatch_stub_266(GLenum target, GLenum query, GLdouble *v);
void APIENTRY shared_dispatch_stub_267(GLenum target, GLenum query, GLfloat *v);
void APIENTRY shared_dispatch_stub_268(GLenum target, GLenum query, GLint *v);
void APIENTRY shared_dispatch_stub_269(GLenum face, GLenum pname, GLfloat *params);
void APIENTRY shared_dispatch_stub_270(GLenum face, GLenum pname, GLint *params);
void APIENTRY shared_dispatch_stub_271(GLenum map, GLfloat *values);
void APIENTRY shared_dispatch_stub_272(GLenum map, GLuint *values);
void APIENTRY shared_dispatch_stub_273(GLenum map, GLushort *values);
void APIENTRY shared_dispatch_stub_274(GLubyte *mask);
const GLubyte * APIENTRY shared_dispatch_stub_275(GLenum name);
void APIENTRY shared_dispatch_stub_276(GLenum target, GLenum pname, GLfloat *params);
void APIENTRY shared_dispatch_stub_277(GLenum target, GLenum pname, GLint *params);
void APIENTRY shared_dispatch_stub_278(GLenum coord, GLenum pname, GLdouble *params);
void APIENTRY shared_dispatch_stub_279(GLenum coord, GLenum pname, GLfloat *params);
void APIENTRY shared_dispatch_stub_280(GLenum coord, GLenum pname, GLint *params);
void APIENTRY shared_dispatch_stub_281(GLenum target, GLint level, GLenum format, GLenum type, GLvoid *pixels);
void APIENTRY shared_dispatch_stub_282(GLenum target, GLenum pname, GLfloat *params);
void APIENTRY shared_dispatch_stub_283(GLenum target, GLenum pname, GLint *params);
void APIENTRY shared_dispatch_stub_284(GLenum target, GLint level, GLenum pname, GLfloat *params);
void APIENTRY shared_dispatch_stub_285(GLenum target, GLint level, GLenum pname, GLint *params);
GLboolean APIENTRY shared_dispatch_stub_286(GLenum cap);
GLboolean APIENTRY shared_dispatch_stub_287(GLuint list);
void APIENTRY shared_dispatch_stub_288(GLclampd zNear, GLclampd zFar);
void APIENTRY shared_dispatch_stub_289(GLdouble left, GLdouble right, GLdouble bottom, GLdouble top, GLdouble zNear, GLdouble zFar);
void APIENTRY shared_dispatch_stub_290(void);
void APIENTRY shared_dispatch_stub_291(const GLfloat *m);
void APIENTRY shared_dispatch_stub_292(const GLdouble *m);
void APIENTRY shared_dispatch_stub_293(GLenum mode);
void APIENTRY shared_dispatch_stub_294(const GLfloat *m);
void APIENTRY shared_dispatch_stub_295(const GLdouble *m);
void APIENTRY shared_dispatch_stub_296(GLdouble left, GLdouble right, GLdouble bottom, GLdouble top, GLdouble zNear, GLdouble zFar);
void APIENTRY shared_dispatch_stub_297(void);
void APIENTRY shared_dispatch_stub_298(void);
void APIENTRY shared_dispatch_stub_299(GLdouble angle, GLdouble x, GLdouble y, GLdouble z);
void APIENTRY shared_dispatch_stub_300(GLfloat angle, GLfloat x, GLfloat y, GLfloat z);
void APIENTRY shared_dispatch_stub_301(GLdouble x, GLdouble y, GLdouble z);
void APIENTRY shared_dispatch_stub_302(GLfloat x, GLfloat y, GLfloat z);
void APIENTRY shared_dispatch_stub_303(GLdouble x, GLdouble y, GLdouble z);
void APIENTRY shared_dispatch_stub_304(GLfloat x, GLfloat y, GLfloat z);
void APIENTRY shared_dispatch_stub_305(GLint x, GLint y, GLsizei width, GLsizei height);
void APIENTRY shared_dispatch_stub_306(GLint i);
void APIENTRY shared_dispatch_stub_307(GLenum target, GLuint texture);
void APIENTRY shared_dispatch_stub_308(GLint size, GLenum type, GLsizei stride, const GLvoid *pointer);
void APIENTRY shared_dispatch_stub_309(GLenum array);
void APIENTRY shared_dispatch_stub_310(GLenum mode, GLint first, GLsizei count);
void APIENTRY shared_dispatch_stub_311(GLenum mode, GLsizei count, GLenum type, const GLvoid *indices);
void APIENTRY shared_dispatch_stub_312(GLsizei stride, const GLvoid *pointer);
void APIENTRY shared_dispatch_stub_313(GLenum array);
void APIENTRY shared_dispatch_stub_314(GLenum type, GLsizei stride, const GLvoid *pointer);
void APIENTRY shared_dispatch_stub_315(GLubyte c);
void APIENTRY shared_dispatch_stub_316(const GLubyte *c);
void APIENTRY shared_dispatch_stub_317(GLenum format, GLsizei stride, const GLvoid *pointer);
void APIENTRY shared_dispatch_stub_318(GLenum type, GLsizei stride, const GLvoid *pointer);
void APIENTRY shared_dispatch_stub_319(GLfloat factor, GLfloat units);
void APIENTRY shared_dispatch_stub_320(GLint size, GLenum type, GLsizei stride, const GLvoid *pointer);
void APIENTRY shared_dispatch_stub_321(GLint size, GLenum type, GLsizei stride, const GLvoid *pointer);
GLboolean APIENTRY shared_dispatch_stub_322(GLsizei n, const GLuint *textures, GLboolean *residences);
void APIENTRY shared_dispatch_stub_323(GLenum target, GLint level, GLenum internalformat, GLint x, GLint y, GLsizei width, GLint border);
void APIENTRY shared_dispatch_stub_324(GLenum target, GLint level, GLenum internalformat, GLint x, GLint y, GLsizei width, GLsizei height, GLint border);
void APIENTRY shared_dispatch_stub_325(GLenum target, GLint level, GLint xoffset, GLint x, GLint y, GLsizei width);
void APIENTRY shared_dispatch_stub_326(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint x, GLint y, GLsizei width, GLsizei height);
void APIENTRY shared_dispatch_stub_327(GLsizei n, const GLuint *textures);
void APIENTRY shared_dispatch_stub_328(GLsizei n, GLuint *textures);
void APIENTRY shared_dispatch_stub_329(GLenum pname, GLvoid **params);
GLboolean APIENTRY shared_dispatch_stub_330(GLuint texture);
void APIENTRY shared_dispatch_stub_331(GLsizei n, const GLuint *textures, const GLclampf *priorities);
void APIENTRY shared_dispatch_stub_332(GLenum target, GLint level, GLint xoffset, GLsizei width, GLenum format, GLenum type, const GLvoid *pixels);
void APIENTRY shared_dispatch_stub_333(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLenum type, const GLvoid *pixels);
void APIENTRY shared_dispatch_stub_334(void);
void APIENTRY shared_dispatch_stub_335(GLbitfield mask);
void APIENTRY shared_dispatch_stub_336(GLclampf red, GLclampf green, GLclampf blue, GLclampf alpha);
void APIENTRY shared_dispatch_stub_337(GLenum mode);
void APIENTRY shared_dispatch_stub_338(GLenum mode, GLuint start, GLuint end, GLsizei count, GLenum type, const GLvoid *indices);
void APIENTRY shared_dispatch_stub_339(GLenum target, GLenum internalformat, GLsizei width, GLenum format, GLenum type, const GLvoid *table);
void APIENTRY shared_dispatch_stub_340(GLenum target, GLenum pname, const GLfloat *params);
void APIENTRY shared_dispatch_stub_341(GLenum target, GLenum pname, const GLint *params);
void APIENTRY shared_dispatch_stub_342(GLenum target, GLenum internalformat, GLint x, GLint y, GLsizei width);
void APIENTRY shared_dispatch_stub_343(GLenum target, GLenum format, GLenum type, GLvoid *table);
void APIENTRY shared_dispatch_stub_344(GLenum target, GLenum pname, GLfloat *params);
void APIENTRY shared_dispatch_stub_345(GLenum target, GLenum pname, GLint *params);
void APIENTRY shared_dispatch_stub_346(GLenum target, GLsizei start, GLsizei count, GLenum format, GLenum type, const GLvoid *data);
void APIENTRY shared_dispatch_stub_347(GLenum target, GLsizei start, GLint x, GLint y, GLsizei width);
void APIENTRY shared_dispatch_stub_348(GLenum target, GLenum internalformat, GLsizei width, GLenum format, GLenum type, const GLvoid *image);
void APIENTRY shared_dispatch_stub_349(GLenum target, GLenum internalformat, GLsizei width, GLsizei height, GLenum format, GLenum type, const GLvoid *image);
void APIENTRY shared_dispatch_stub_350(GLenum target, GLenum pname, GLfloat params);
void APIENTRY shared_dispatch_stub_351(GLenum target, GLenum pname, const GLfloat *params);
void APIENTRY shared_dispatch_stub_352(GLenum target, GLenum pname, GLint params);
void APIENTRY shared_dispatch_stub_353(GLenum target, GLenum pname, const GLint *params);
void APIENTRY shared_dispatch_stub_354(GLenum target, GLenum internalformat, GLint x, GLint y, GLsizei width);
void APIENTRY shared_dispatch_stub_355(GLenum target, GLenum internalformat, GLint x, GLint y, GLsizei width, GLsizei height);
void APIENTRY shared_dispatch_stub_356(GLenum target, GLenum format, GLenum type, GLvoid *image);
void APIENTRY shared_dispatch_stub_357(GLenum target, GLenum pname, GLfloat *params);
void APIENTRY shared_dispatch_stub_358(GLenum target, GLenum pname, GLint *params);
void APIENTRY shared_dispatch_stub_359(GLenum target, GLenum format, GLenum type, GLvoid *row, GLvoid *column, GLvoid *span);
void APIENTRY shared_dispatch_stub_360(GLenum target, GLenum internalformat, GLsizei width, GLsizei height, GLenum format, GLenum type, const GLvoid *row, const GLvoid *column);
void APIENTRY shared_dispatch_stub_361(GLenum target, GLboolean reset, GLenum format, GLenum type, GLvoid *values);
void APIENTRY shared_dispatch_stub_362(GLenum target, GLenum pname, GLfloat *params);
void APIENTRY shared_dispatch_stub_363(GLenum target, GLenum pname, GLint *params);
void APIENTRY shared_dispatch_stub_364(GLenum target, GLboolean reset, GLenum format, GLenum type, GLvoid *values);
void APIENTRY shared_dispatch_stub_365(GLenum target, GLenum pname, GLfloat *params);
void APIENTRY shared_dispatch_stub_366(GLenum target, GLenum pname, GLint *params);
void APIENTRY shared_dispatch_stub_367(GLenum target, GLsizei width, GLenum internalformat, GLboolean sink);
void APIENTRY shared_dispatch_stub_368(GLenum target, GLenum internalformat, GLboolean sink);
void APIENTRY shared_dispatch_stub_369(GLenum target);
void APIENTRY shared_dispatch_stub_370(GLenum target);
void APIENTRY shared_dispatch_stub_371(GLenum target, GLint level, GLint internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLenum format, GLenum type, const GLvoid *pixels);
void APIENTRY shared_dispatch_stub_372(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, const GLvoid *pixels);
void APIENTRY shared_dispatch_stub_373(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLint x, GLint y, GLsizei width, GLsizei height);
void APIENTRY shared_dispatch_stub_374(GLenum texture);
void APIENTRY shared_dispatch_stub_375(GLenum texture);
void APIENTRY shared_dispatch_stub_376(GLenum target, GLdouble s);
void APIENTRY shared_dispatch_stub_377(GLenum target, const GLdouble *v);
void APIENTRY shared_dispatch_stub_378(GLenum target, GLfloat s);
void APIENTRY shared_dispatch_stub_379(GLenum target, const GLfloat *v);
void APIENTRY shared_dispatch_stub_380(GLenum target, GLint s);
void APIENTRY shared_dispatch_stub_381(GLenum target, const GLint *v);
void APIENTRY shared_dispatch_stub_382(GLenum target, GLshort s);
void APIENTRY shared_dispatch_stub_383(GLenum target, const GLshort *v);
void APIENTRY shared_dispatch_stub_384(GLenum target, GLdouble s, GLdouble t);
void APIENTRY shared_dispatch_stub_385(GLenum target, const GLdouble *v);
void APIENTRY shared_dispatch_stub_386(GLenum target, GLfloat s, GLfloat t);
void APIENTRY shared_dispatch_stub_387(GLenum target, const GLfloat *v);
void APIENTRY shared_dispatch_stub_388(GLenum target, GLint s, GLint t);
void APIENTRY shared_dispatch_stub_389(GLenum target, const GLint *v);
void APIENTRY shared_dispatch_stub_390(GLenum target, GLshort s, GLshort t);
void APIENTRY shared_dispatch_stub_391(GLenum target, const GLshort *v);
void APIENTRY shared_dispatch_stub_392(GLenum target, GLdouble s, GLdouble t, GLdouble r);
void APIENTRY shared_dispatch_stub_393(GLenum target, const GLdouble *v);
void APIENTRY shared_dispatch_stub_394(GLenum target, GLfloat s, GLfloat t, GLfloat r);
void APIENTRY shared_dispatch_stub_395(GLenum target, const GLfloat *v);
void APIENTRY shared_dispatch_stub_396(GLenum target, GLint s, GLint t, GLint r);
void APIENTRY shared_dispatch_stub_397(GLenum target, const GLint *v);
void APIENTRY shared_dispatch_stub_398(GLenum target, GLshort s, GLshort t, GLshort r);
void APIENTRY shared_dispatch_stub_399(GLenum target, const GLshort *v);
void APIENTRY shared_dispatch_stub_400(GLenum target, GLdouble s, GLdouble t, GLdouble r, GLdouble q);
void APIENTRY shared_dispatch_stub_401(GLenum target, const GLdouble *v);
void APIENTRY shared_dispatch_stub_402(GLenum target, GLfloat s, GLfloat t, GLfloat r, GLfloat q);
void APIENTRY shared_dispatch_stub_403(GLenum target, const GLfloat *v);
void APIENTRY shared_dispatch_stub_404(GLenum target, GLint s, GLint t, GLint r, GLint q);
void APIENTRY shared_dispatch_stub_405(GLenum target, const GLint *v);
void APIENTRY shared_dispatch_stub_406(GLenum target, GLshort s, GLshort t, GLshort r, GLshort q);
void APIENTRY shared_dispatch_stub_407(GLenum target, const GLshort *v);
void APIENTRY shared_dispatch_stub_408(GLuint program, GLuint shader);
GLuint APIENTRY shared_dispatch_stub_409(void);
GLuint APIENTRY shared_dispatch_stub_410(GLenum type);
void APIENTRY shared_dispatch_stub_411(GLuint program);
void APIENTRY shared_dispatch_stub_412(GLuint program);
void APIENTRY shared_dispatch_stub_413(GLuint program, GLuint shader);
void APIENTRY shared_dispatch_stub_414(GLuint program, GLsizei maxCount, GLsizei *count, GLuint *obj);
void APIENTRY shared_dispatch_stub_415(GLuint program, GLsizei bufSize, GLsizei *length, GLchar *infoLog);
void APIENTRY shared_dispatch_stub_416(GLuint program, GLenum pname, GLint *params);
void APIENTRY shared_dispatch_stub_417(GLuint shader, GLsizei bufSize, GLsizei *length, GLchar *infoLog);
void APIENTRY shared_dispatch_stub_418(GLuint shader, GLenum pname, GLint *params);
GLboolean APIENTRY shared_dispatch_stub_419(GLuint program);
GLboolean APIENTRY shared_dispatch_stub_420(GLuint shader);
void APIENTRY shared_dispatch_stub_421(GLenum face, GLenum func, GLint ref, GLuint mask);
void APIENTRY shared_dispatch_stub_422(GLenum face, GLuint mask);
void APIENTRY shared_dispatch_stub_423(GLenum face, GLenum sfail, GLenum zfail, GLenum zpass);
void APIENTRY shared_dispatch_stub_424(GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);
void APIENTRY shared_dispatch_stub_425(GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);
void APIENTRY shared_dispatch_stub_426(GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);
void APIENTRY shared_dispatch_stub_427(GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);
void APIENTRY shared_dispatch_stub_428(GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);
void APIENTRY shared_dispatch_stub_429(GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);
void APIENTRY shared_dispatch_stub_430(GLenum target, GLenum clamp);
void APIENTRY shared_dispatch_stub_431(GLenum buffer, GLint drawbuffer, GLfloat depth, GLint stencil);
void APIENTRY shared_dispatch_stub_432(GLenum buffer, GLint drawbuffer, const GLfloat *value);
void APIENTRY shared_dispatch_stub_433(GLenum buffer, GLint drawbuffer, const GLint *value);
void APIENTRY shared_dispatch_stub_434(GLenum buffer, GLint drawbuffer, const GLuint *value);
const GLubyte * APIENTRY shared_dispatch_stub_435(GLenum name, GLuint index);
void APIENTRY shared_dispatch_stub_436(GLenum target, GLenum attachment, GLuint texture, GLint level);
void APIENTRY shared_dispatch_stub_437(GLenum target, GLenum pname, GLint64 *params);
void APIENTRY shared_dispatch_stub_438(GLenum cap, GLuint index, GLint64 *data);
void APIENTRY shared_dispatch_stub_439(GLuint index, GLuint divisor);
void APIENTRY shared_dispatch_stub_440(const GLdouble *m);
void APIENTRY shared_dispatch_stub_441(const GLfloat *m);
void APIENTRY shared_dispatch_stub_442(const GLdouble *m);
void APIENTRY shared_dispatch_stub_443(const GLfloat *m);
void APIENTRY shared_dispatch_stub_444(GLclampf value, GLboolean invert);
void APIENTRY shared_dispatch_stub_445(GLenum target, GLint level, GLenum internalformat, GLsizei width, GLint border, GLsizei imageSize, const GLvoid *data);
void APIENTRY shared_dispatch_stub_446(GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLint border, GLsizei imageSize, const GLvoid *data);
void APIENTRY shared_dispatch_stub_447(GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLsizei imageSize, const GLvoid *data);
void APIENTRY shared_dispatch_stub_448(GLenum target, GLint level, GLint xoffset, GLsizei width, GLenum format, GLsizei imageSize, const GLvoid *data);
void APIENTRY shared_dispatch_stub_449(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLsizei imageSize, const GLvoid *data);
void APIENTRY shared_dispatch_stub_450(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLsizei imageSize, const GLvoid *data);
void APIENTRY shared_dispatch_stub_451(GLenum target, GLint level, GLvoid *img);
void APIENTRY shared_dispatch_stub_452(GLuint index);
void APIENTRY shared_dispatch_stub_453(GLuint index);
void APIENTRY shared_dispatch_stub_454(GLenum target, GLuint index, GLdouble *params);
void APIENTRY shared_dispatch_stub_455(GLenum target, GLuint index, GLfloat *params);
void APIENTRY shared_dispatch_stub_456(GLenum target, GLuint index, GLdouble *params);
void APIENTRY shared_dispatch_stub_457(GLenum target, GLuint index, GLfloat *params);
void APIENTRY shared_dispatch_stub_458(GLenum target, GLenum pname, GLvoid *string);
void APIENTRY shared_dispatch_stub_459(GLenum target, GLenum pname, GLint *params);
void APIENTRY shared_dispatch_stub_460(GLuint index, GLenum pname, GLdouble *params);
void APIENTRY shared_dispatch_stub_461(GLuint index, GLenum pname, GLfloat *params);
void APIENTRY shared_dispatch_stub_462(GLuint index, GLenum pname, GLint *params);
void APIENTRY shared_dispatch_stub_463(GLenum target, GLuint index, GLdouble x, GLdouble y, GLdouble z, GLdouble w);
void APIENTRY shared_dispatch_stub_464(GLenum target, GLuint index, const GLdouble *params);
void APIENTRY shared_dispatch_stub_465(GLenum target, GLuint index, GLfloat x, GLfloat y, GLfloat z, GLfloat w);
void APIENTRY shared_dispatch_stub_466(GLenum target, GLuint index, const GLfloat *params);
void APIENTRY shared_dispatch_stub_467(GLenum target, GLuint index, GLdouble x, GLdouble y, GLdouble z, GLdouble w);
void APIENTRY shared_dispatch_stub_468(GLenum target, GLuint index, const GLdouble *params);
void APIENTRY shared_dispatch_stub_469(GLenum target, GLuint index, GLfloat x, GLfloat y, GLfloat z, GLfloat w);
void APIENTRY shared_dispatch_stub_470(GLenum target, GLuint index, const GLfloat *params);
void APIENTRY shared_dispatch_stub_471(GLenum target, GLenum format, GLsizei len, const GLvoid *string);
void APIENTRY shared_dispatch_stub_472(GLuint index, GLdouble x);
void APIENTRY shared_dispatch_stub_473(GLuint index, const GLdouble *v);
void APIENTRY shared_dispatch_stub_474(GLuint index, GLfloat x);
void APIENTRY shared_dispatch_stub_475(GLuint index, const GLfloat *v);
void APIENTRY shared_dispatch_stub_476(GLuint index, GLshort x);
void APIENTRY shared_dispatch_stub_477(GLuint index, const GLshort *v);
void APIENTRY shared_dispatch_stub_478(GLuint index, GLdouble x, GLdouble y);
void APIENTRY shared_dispatch_stub_479(GLuint index, const GLdouble *v);
void APIENTRY shared_dispatch_stub_480(GLuint index, GLfloat x, GLfloat y);
void APIENTRY shared_dispatch_stub_481(GLuint index, const GLfloat *v);
void APIENTRY shared_dispatch_stub_482(GLuint index, GLshort x, GLshort y);
void APIENTRY shared_dispatch_stub_483(GLuint index, const GLshort *v);
void APIENTRY shared_dispatch_stub_484(GLuint index, GLdouble x, GLdouble y, GLdouble z);
void APIENTRY shared_dispatch_stub_485(GLuint index, const GLdouble *v);
void APIENTRY shared_dispatch_stub_486(GLuint index, GLfloat x, GLfloat y, GLfloat z);
void APIENTRY shared_dispatch_stub_487(GLuint index, const GLfloat *v);
void APIENTRY shared_dispatch_stub_488(GLuint index, GLshort x, GLshort y, GLshort z);
void APIENTRY shared_dispatch_stub_489(GLuint index, const GLshort *v);
void APIENTRY shared_dispatch_stub_490(GLuint index, const GLbyte *v);
void APIENTRY shared_dispatch_stub_491(GLuint index, const GLint *v);
void APIENTRY shared_dispatch_stub_492(GLuint index, const GLshort *v);
void APIENTRY shared_dispatch_stub_493(GLuint index, GLubyte x, GLubyte y, GLubyte z, GLubyte w);
void APIENTRY shared_dispatch_stub_494(GLuint index, const GLubyte *v);
void APIENTRY shared_dispatch_stub_495(GLuint index, const GLuint *v);
void APIENTRY shared_dispatch_stub_496(GLuint index, const GLushort *v);
void APIENTRY shared_dispatch_stub_497(GLuint index, const GLbyte *v);
void APIENTRY shared_dispatch_stub_498(GLuint index, GLdouble x, GLdouble y, GLdouble z, GLdouble w);
void APIENTRY shared_dispatch_stub_499(GLuint index, const GLdouble *v);
void APIENTRY shared_dispatch_stub_500(GLuint index, GLfloat x, GLfloat y, GLfloat z, GLfloat w);
void APIENTRY shared_dispatch_stub_501(GLuint index, const GLfloat *v);
void APIENTRY shared_dispatch_stub_502(GLuint index, const GLint *v);
void APIENTRY shared_dispatch_stub_503(GLuint index, GLshort x, GLshort y, GLshort z, GLshort w);
void APIENTRY shared_dispatch_stub_504(GLuint index, const GLshort *v);
void APIENTRY shared_dispatch_stub_505(GLuint index, const GLubyte *v);
void APIENTRY shared_dispatch_stub_506(GLuint index, const GLuint *v);
void APIENTRY shared_dispatch_stub_507(GLuint index, const GLushort *v);
void APIENTRY shared_dispatch_stub_508(GLuint index, GLint size, GLenum type, GLboolean normalized, GLsizei stride, const GLvoid *pointer);
void APIENTRY shared_dispatch_stub_509(GLenum target, GLuint buffer);
void APIENTRY shared_dispatch_stub_510(GLenum target, GLsizeiptrARB size, const GLvoid *data, GLenum usage);
void APIENTRY shared_dispatch_stub_511(GLenum target, GLintptrARB offset, GLsizeiptrARB size, const GLvoid *data);
void APIENTRY shared_dispatch_stub_512(GLsizei n, const GLuint *buffer);
void APIENTRY shared_dispatch_stub_513(GLsizei n, GLuint *buffer);
void APIENTRY shared_dispatch_stub_514(GLenum target, GLenum pname, GLint *params);
void APIENTRY shared_dispatch_stub_515(GLenum target, GLenum pname, GLvoid **params);
void APIENTRY shared_dispatch_stub_516(GLenum target, GLintptrARB offset, GLsizeiptrARB size, GLvoid *data);
GLboolean APIENTRY shared_dispatch_stub_517(GLuint buffer);
GLvoid * APIENTRY shared_dispatch_stub_518(GLenum target, GLenum access);
GLboolean APIENTRY shared_dispatch_stub_519(GLenum target);
void APIENTRY shared_dispatch_stub_520(GLenum target, GLuint id);
void APIENTRY shared_dispatch_stub_521(GLsizei n, const GLuint *ids);
void APIENTRY shared_dispatch_stub_522(GLenum target);
void APIENTRY shared_dispatch_stub_523(GLsizei n, GLuint *ids);
void APIENTRY shared_dispatch_stub_524(GLuint id, GLenum pname, GLint *params);
void APIENTRY shared_dispatch_stub_525(GLuint id, GLenum pname, GLuint *params);
void APIENTRY shared_dispatch_stub_526(GLenum target, GLenum pname, GLint *params);
GLboolean APIENTRY shared_dispatch_stub_527(GLuint id);
void APIENTRY shared_dispatch_stub_528(GLhandleARB containerObj, GLhandleARB obj);
void APIENTRY shared_dispatch_stub_529(GLhandleARB shader);
GLhandleARB APIENTRY shared_dispatch_stub_530(void);
GLhandleARB APIENTRY shared_dispatch_stub_531(GLenum shaderType);
void APIENTRY shared_dispatch_stub_532(GLhandleARB obj);
void APIENTRY shared_dispatch_stub_533(GLhandleARB containerObj, GLhandleARB attachedObj);
void APIENTRY shared_dispatch_stub_534(GLhandleARB program, GLuint index, GLsizei bufSize, GLsizei *length, GLint *size, GLenum *type, GLcharARB *name);
void APIENTRY shared_dispatch_stub_535(GLhandleARB containerObj, GLsizei maxLength, GLsizei *length, GLhandleARB *infoLog);
GLhandleARB APIENTRY shared_dispatch_stub_536(GLenum pname);
void APIENTRY shared_dispatch_stub_537(GLhandleARB obj, GLsizei maxLength, GLsizei *length, GLcharARB *infoLog);
void APIENTRY shared_dispatch_stub_538(GLhandleARB obj, GLenum pname, GLfloat *params);
void APIENTRY shared_dispatch_stub_539(GLhandleARB obj, GLenum pname, GLint *params);
void APIENTRY shared_dispatch_stub_540(GLhandleARB shader, GLsizei bufSize, GLsizei *length, GLcharARB *source);
GLint APIENTRY shared_dispatch_stub_541(GLhandleARB program, const GLcharARB *name);
void APIENTRY shared_dispatch_stub_542(GLhandleARB program, GLint location, GLfloat *params);
void APIENTRY shared_dispatch_stub_543(GLhandleARB program, GLint location, GLint *params);
void APIENTRY shared_dispatch_stub_544(GLhandleARB program);
void APIENTRY shared_dispatch_stub_545(GLhandleARB shader, GLsizei count, const GLcharARB **string, const GLint *length);
void APIENTRY shared_dispatch_stub_546(GLint location, GLfloat v0);
void APIENTRY shared_dispatch_stub_547(GLint location, GLsizei count, const GLfloat *value);
void APIENTRY shared_dispatch_stub_548(GLint location, GLint v0);
void APIENTRY shared_dispatch_stub_549(GLint location, GLsizei count, const GLint *value);
void APIENTRY shared_dispatch_stub_550(GLint location, GLfloat v0, GLfloat v1);
void APIENTRY shared_dispatch_stub_551(GLint location, GLsizei count, const GLfloat *value);
void APIENTRY shared_dispatch_stub_552(GLint location, GLint v0, GLint v1);
void APIENTRY shared_dispatch_stub_553(GLint location, GLsizei count, const GLint *value);
void APIENTRY shared_dispatch_stub_554(GLint location, GLfloat v0, GLfloat v1, GLfloat v2);
void APIENTRY shared_dispatch_stub_555(GLint location, GLsizei count, const GLfloat *value);
void APIENTRY shared_dispatch_stub_556(GLint location, GLint v0, GLint v1, GLint v2);
void APIENTRY shared_dispatch_stub_557(GLint location, GLsizei count, const GLint *value);
void APIENTRY shared_dispatch_stub_558(GLint location, GLfloat v0, GLfloat v1, GLfloat v2, GLfloat v3);
void APIENTRY shared_dispatch_stub_559(GLint location, GLsizei count, const GLfloat *value);
void APIENTRY shared_dispatch_stub_560(GLint location, GLint v0, GLint v1, GLint v2, GLint v3);
void APIENTRY shared_dispatch_stub_561(GLint location, GLsizei count, const GLint *value);
void APIENTRY shared_dispatch_stub_562(GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);
void APIENTRY shared_dispatch_stub_563(GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);
void APIENTRY shared_dispatch_stub_564(GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);
void APIENTRY shared_dispatch_stub_565(GLhandleARB program);
void APIENTRY shared_dispatch_stub_566(GLhandleARB program);
void APIENTRY shared_dispatch_stub_567(GLhandleARB program, GLuint index, const GLcharARB *name);
void APIENTRY shared_dispatch_stub_568(GLhandleARB program, GLuint index, GLsizei bufSize, GLsizei *length, GLint *size, GLenum *type, GLcharARB *name);
GLint APIENTRY shared_dispatch_stub_569(GLhandleARB program, const GLcharARB *name);
void APIENTRY shared_dispatch_stub_570(GLsizei n, const GLenum *bufs);
void APIENTRY shared_dispatch_stub_571(GLenum target, GLenum clamp);
void APIENTRY shared_dispatch_stub_572(GLenum mode, GLint first, GLsizei count, GLsizei primcount);
void APIENTRY shared_dispatch_stub_573(GLenum mode, GLsizei count, GLenum type, const GLvoid *indices, GLsizei primcount);
void APIENTRY shared_dispatch_stub_574(GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height);
void APIENTRY shared_dispatch_stub_575(GLenum target, GLenum attachment, GLuint texture, GLint level);
void APIENTRY shared_dispatch_stub_576(GLenum target, GLenum attachment, GLuint texture, GLint level, GLenum face);
void APIENTRY shared_dispatch_stub_577(GLuint program, GLenum pname, GLint value);
void APIENTRY shared_dispatch_stub_578(GLuint index, GLuint divisor);
void APIENTRY shared_dispatch_stub_579(GLenum target, GLintptr offset, GLsizeiptr length);
GLvoid * APIENTRY shared_dispatch_stub_580(GLenum target, GLintptr offset, GLsizeiptr length, GLbitfield access);
void APIENTRY shared_dispatch_stub_581(GLenum target, GLenum internalFormat, GLuint buffer);
void APIENTRY shared_dispatch_stub_582(GLuint array);
void APIENTRY shared_dispatch_stub_583(GLsizei n, GLuint *arrays);
void APIENTRY shared_dispatch_stub_584(GLuint program, GLuint uniformBlockIndex, GLsizei bufSize, GLsizei *length, GLchar *uniformBlockName);
void APIENTRY shared_dispatch_stub_585(GLuint program, GLuint uniformBlockIndex, GLenum pname, GLint *params);
void APIENTRY shared_dispatch_stub_586(GLuint program, GLuint uniformIndex, GLsizei bufSize, GLsizei *length, GLchar *uniformName);
void APIENTRY shared_dispatch_stub_587(GLuint program, GLsizei uniformCount, const GLuint *uniformIndices, GLenum pname, GLint *params);
GLuint APIENTRY shared_dispatch_stub_588(GLuint program, const GLchar *uniformBlockName);
void APIENTRY shared_dispatch_stub_589(GLuint program, GLsizei uniformCount, const GLchar * const *uniformNames, GLuint *uniformIndices);
void APIENTRY shared_dispatch_stub_590(GLuint program, GLuint uniformBlockIndex, GLuint uniformBlockBinding);
void APIENTRY shared_dispatch_stub_591(GLenum readTarget, GLenum writeTarget, GLintptr readOffset, GLintptr writeOffset, GLsizeiptr size);
GLenum APIENTRY shared_dispatch_stub_592(GLsync sync, GLbitfield flags, GLuint64 timeout);
void APIENTRY shared_dispatch_stub_593(GLsync sync);
GLsync APIENTRY shared_dispatch_stub_594(GLenum condition, GLbitfield flags);
void APIENTRY shared_dispatch_stub_595(GLenum pname, GLint64 *params);
void APIENTRY shared_dispatch_stub_596(GLsync sync, GLenum pname, GLsizei bufSize, GLsizei *length, GLint *values);
GLboolean APIENTRY shared_dispatch_stub_597(GLsync sync);
void APIENTRY shared_dispatch_stub_598(GLsync sync, GLbitfield flags, GLuint64 timeout);
void APIENTRY shared_dispatch_stub_599(GLenum mode, GLsizei count, GLenum type, const GLvoid *indices, GLint basevertex);
void APIENTRY shared_dispatch_stub_600(GLenum mode, GLsizei count, GLenum type, const GLvoid *indices, GLsizei primcount, GLint basevertex);
void APIENTRY shared_dispatch_stub_601(GLenum mode, GLuint start, GLuint end, GLsizei count, GLenum type, const GLvoid *indices, GLint basevertex);
void APIENTRY shared_dispatch_stub_602(GLenum mode, const GLsizei *count, GLenum type, const GLvoid * const *indices, GLsizei primcount, const GLint *basevertex);
void APIENTRY shared_dispatch_stub_603(GLuint buf, GLenum modeRGB, GLenum modeA);
void APIENTRY shared_dispatch_stub_604(GLuint buf, GLenum mode);
void APIENTRY shared_dispatch_stub_605(GLuint buf, GLenum srcRGB, GLenum dstRGB, GLenum srcA, GLenum dstA);
void APIENTRY shared_dispatch_stub_606(GLuint buf, GLenum src, GLenum dst);
void APIENTRY shared_dispatch_stub_607(GLuint program, GLuint colorNumber, GLuint index, const GLchar *name);
GLint APIENTRY shared_dispatch_stub_608(GLuint program, const GLchar *name);
void APIENTRY shared_dispatch_stub_609(GLuint unit, GLuint sampler);
void APIENTRY shared_dispatch_stub_610(GLsizei count, const GLuint *samplers);
void APIENTRY shared_dispatch_stub_611(GLsizei count, GLuint *samplers);
void APIENTRY shared_dispatch_stub_612(GLuint sampler, GLenum pname, GLint *params);
void APIENTRY shared_dispatch_stub_613(GLuint sampler, GLenum pname, GLuint *params);
void APIENTRY shared_dispatch_stub_614(GLuint sampler, GLenum pname, GLfloat *params);
void APIENTRY shared_dispatch_stub_615(GLuint sampler, GLenum pname, GLint *params);
GLboolean APIENTRY shared_dispatch_stub_616(GLuint sampler);
void APIENTRY shared_dispatch_stub_617(GLuint sampler, GLenum pname, const GLint *params);
void APIENTRY shared_dispatch_stub_618(GLuint sampler, GLenum pname, const GLuint *params);
void APIENTRY shared_dispatch_stub_619(GLuint sampler, GLenum pname, GLfloat param);
void APIENTRY shared_dispatch_stub_620(GLuint sampler, GLenum pname, const GLfloat *params);
void APIENTRY shared_dispatch_stub_621(GLuint sampler, GLenum pname, GLint param);
void APIENTRY shared_dispatch_stub_622(GLuint sampler, GLenum pname, const GLint *params);
void APIENTRY shared_dispatch_stub_623(GLuint id, GLenum target);
void APIENTRY shared_dispatch_stub_624(GLenum type, GLuint color);
void APIENTRY shared_dispatch_stub_625(GLenum type, const GLuint *color);
void APIENTRY shared_dispatch_stub_626(GLenum type, GLuint color);
void APIENTRY shared_dispatch_stub_627(GLenum type, const GLuint *color);
void APIENTRY shared_dispatch_stub_628(GLenum texture, GLenum type, GLuint coords);
void APIENTRY shared_dispatch_stub_629(GLenum texture, GLenum type, const GLuint *coords);
void APIENTRY shared_dispatch_stub_630(GLenum texture, GLenum type, GLuint coords);
void APIENTRY shared_dispatch_stub_631(GLenum texture, GLenum type, const GLuint *coords);
void APIENTRY shared_dispatch_stub_632(GLenum texture, GLenum type, GLuint coords);
void APIENTRY shared_dispatch_stub_633(GLenum texture, GLenum type, const GLuint *coords);
void APIENTRY shared_dispatch_stub_634(GLenum texture, GLenum type, GLuint coords);
void APIENTRY shared_dispatch_stub_635(GLenum texture, GLenum type, const GLuint *coords);
void APIENTRY shared_dispatch_stub_636(GLenum type, GLuint coords);
void APIENTRY shared_dispatch_stub_637(GLenum type, const GLuint *coords);
void APIENTRY shared_dispatch_stub_638(GLenum type, GLuint color);
void APIENTRY shared_dispatch_stub_639(GLenum type, const GLuint *color);
void APIENTRY shared_dispatch_stub_640(GLenum type, GLuint coords);
void APIENTRY shared_dispatch_stub_641(GLenum type, const GLuint *coords);
void APIENTRY shared_dispatch_stub_642(GLenum type, GLuint coords);
void APIENTRY shared_dispatch_stub_643(GLenum type, const GLuint *coords);
void APIENTRY shared_dispatch_stub_644(GLenum type, GLuint coords);
void APIENTRY shared_dispatch_stub_645(GLenum type, const GLuint *coords);
void APIENTRY shared_dispatch_stub_646(GLenum type, GLuint coords);
void APIENTRY shared_dispatch_stub_647(GLenum type, const GLuint *coords);
void APIENTRY shared_dispatch_stub_648(GLuint index, GLenum type, GLboolean normalized, GLuint value);
void APIENTRY shared_dispatch_stub_649(GLuint index, GLenum type, GLboolean normalized, const GLuint *value);
void APIENTRY shared_dispatch_stub_650(GLuint index, GLenum type, GLboolean normalized, GLuint value);
void APIENTRY shared_dispatch_stub_651(GLuint index, GLenum type, GLboolean normalized, const GLuint *value);
void APIENTRY shared_dispatch_stub_652(GLuint index, GLenum type, GLboolean normalized, GLuint value);
void APIENTRY shared_dispatch_stub_653(GLuint index, GLenum type, GLboolean normalized, const GLuint *value);
void APIENTRY shared_dispatch_stub_654(GLuint index, GLenum type, GLboolean normalized, GLuint value);
void APIENTRY shared_dispatch_stub_655(GLuint index, GLenum type, GLboolean normalized, const GLuint *value);
void APIENTRY shared_dispatch_stub_656(GLenum type, GLuint value);
void APIENTRY shared_dispatch_stub_657(GLenum type, const GLuint *value);
void APIENTRY shared_dispatch_stub_658(GLenum type, GLuint value);
void APIENTRY shared_dispatch_stub_659(GLenum type, const GLuint *value);
void APIENTRY shared_dispatch_stub_660(GLenum type, GLuint value);
void APIENTRY shared_dispatch_stub_661(GLenum type, const GLuint *value);
void APIENTRY shared_dispatch_stub_662(GLenum target, GLuint id);
void APIENTRY shared_dispatch_stub_663(GLsizei n, const GLuint *ids);
void APIENTRY shared_dispatch_stub_664(GLenum mode, GLuint id);
void APIENTRY shared_dispatch_stub_665(GLsizei n, GLuint *ids);
GLboolean APIENTRY shared_dispatch_stub_666(GLuint id);
void APIENTRY shared_dispatch_stub_667(void);
void APIENTRY shared_dispatch_stub_668(void);
void APIENTRY shared_dispatch_stub_669(GLenum target, GLuint index, GLuint id);
void APIENTRY shared_dispatch_stub_670(GLenum mode, GLuint id, GLuint stream);
void APIENTRY shared_dispatch_stub_671(GLenum target, GLuint index);
void APIENTRY shared_dispatch_stub_672(GLenum target, GLuint index, GLenum pname, GLint *params);
void APIENTRY shared_dispatch_stub_673(GLclampf depth);
void APIENTRY shared_dispatch_stub_674(GLclampf zNear, GLclampf zFar);
void APIENTRY shared_dispatch_stub_675(GLenum shadertype, GLenum precisiontype, GLint *range, GLint *precision);
void APIENTRY shared_dispatch_stub_676(void);
void APIENTRY shared_dispatch_stub_677(GLsizei n, const GLuint *shaders, GLenum binaryformat, const GLvoid *binary, GLsizei length);
void APIENTRY shared_dispatch_stub_678(GLuint program, GLsizei bufSize, GLsizei *length, GLenum *binaryFormat, GLvoid *binary);
void APIENTRY shared_dispatch_stub_679(GLuint program, GLenum binaryFormat, const GLvoid *binary, GLsizei length);
void APIENTRY shared_dispatch_stub_680(GLuint program, GLenum pname, GLint value);
void APIENTRY shared_dispatch_stub_681(GLDEBUGPROCARB callback, const GLvoid *userParam);
void APIENTRY shared_dispatch_stub_682(GLenum source, GLenum type, GLenum severity, GLsizei count, const GLuint *ids, GLboolean enabled);
void APIENTRY shared_dispatch_stub_683(GLenum source, GLenum type, GLuint id, GLenum severity, GLsizei length, const GLcharARB *buf);
GLuint APIENTRY shared_dispatch_stub_684(GLuint count, GLsizei bufsize, GLenum *sources, GLenum *types, GLuint *ids, GLenum *severities, GLsizei *lengths, GLcharARB *messageLog);
GLenum APIENTRY shared_dispatch_stub_685(void);
void APIENTRY shared_dispatch_stub_686(GLenum target, GLenum format, GLenum type, GLsizei bufSize, GLvoid *table);
void APIENTRY shared_dispatch_stub_687(GLenum target, GLint lod, GLsizei bufSize, GLvoid *img);
void APIENTRY shared_dispatch_stub_688(GLenum target, GLenum format, GLenum type, GLsizei bufSize, GLvoid *image);
void APIENTRY shared_dispatch_stub_689(GLenum target, GLboolean reset, GLenum format, GLenum type, GLsizei bufSize, GLvoid *values);
void APIENTRY shared_dispatch_stub_690(GLenum target, GLenum query, GLsizei bufSize, GLdouble *v);
void APIENTRY shared_dispatch_stub_691(GLenum target, GLenum query, GLsizei bufSize, GLfloat *v);
void APIENTRY shared_dispatch_stub_692(GLenum target, GLenum query, GLsizei bufSize, GLint *v);
void APIENTRY shared_dispatch_stub_693(GLenum target, GLboolean reset, GLenum format, GLenum type, GLsizei bufSize, GLvoid *values);
void APIENTRY shared_dispatch_stub_694(GLenum map, GLsizei bufSize, GLfloat *values);
void APIENTRY shared_dispatch_stub_695(GLenum map, GLsizei bufSize, GLuint *values);
void APIENTRY shared_dispatch_stub_696(GLenum map, GLsizei bufSize, GLushort *values);
void APIENTRY shared_dispatch_stub_697(GLsizei bufSize, GLubyte *pattern);
void APIENTRY shared_dispatch_stub_698(GLenum target, GLenum format, GLenum type, GLsizei rowBufSize, GLvoid *row, GLsizei columnBufSize, GLvoid *column, GLvoid *span);
void APIENTRY shared_dispatch_stub_699(GLenum target, GLint level, GLenum format, GLenum type, GLsizei bufSize, GLvoid *img);
void APIENTRY shared_dispatch_stub_700(GLhandleARB program, GLint location, GLsizei bufSize, GLdouble *params);
void APIENTRY shared_dispatch_stub_701(GLhandleARB program, GLint location, GLsizei bufSize, GLfloat *params);
void APIENTRY shared_dispatch_stub_702(GLhandleARB program, GLint location, GLsizei bufSize, GLint *params);
void APIENTRY shared_dispatch_stub_703(GLhandleARB program, GLint location, GLsizei bufSize, GLuint *params);
void APIENTRY shared_dispatch_stub_704(GLint x, GLint y, GLsizei width, GLsizei height, GLenum format, GLenum type, GLsizei bufSize, GLvoid *data);
void APIENTRY shared_dispatch_stub_705(GLenum mode, GLint first, GLsizei count, GLsizei primcount, GLuint baseinstance);
void APIENTRY shared_dispatch_stub_706(GLenum mode, GLsizei count, GLenum type, const GLvoid *indices, GLsizei primcount, GLuint baseinstance);
void APIENTRY shared_dispatch_stub_707(GLenum mode, GLsizei count, GLenum type, const GLvoid *indices, GLsizei primcount, GLint basevertex, GLuint baseinstance);
void APIENTRY shared_dispatch_stub_708(GLenum mode, GLuint id, GLsizei primcount);
void APIENTRY shared_dispatch_stub_709(GLenum mode, GLuint id, GLuint stream, GLsizei primcount);
void APIENTRY shared_dispatch_stub_710(GLenum target, GLsizei levels, GLenum internalFormat, GLsizei width);
void APIENTRY shared_dispatch_stub_711(GLenum target, GLsizei levels, GLenum internalFormat, GLsizei width, GLsizei height);
void APIENTRY shared_dispatch_stub_712(GLenum target, GLsizei levels, GLenum internalFormat, GLsizei width, GLsizei height, GLsizei depth);
void APIENTRY shared_dispatch_stub_713(GLuint texture, GLenum target, GLsizei levels, GLenum internalFormat, GLsizei width);
void APIENTRY shared_dispatch_stub_714(GLuint texture, GLenum target, GLsizei levels, GLenum internalFormat, GLsizei width, GLsizei height);
void APIENTRY shared_dispatch_stub_715(GLuint texture, GLenum target, GLsizei levels, GLenum internalFormat, GLsizei width, GLsizei height, GLsizei depth);
void APIENTRY shared_dispatch_stub_716(GLuint buffer);
void APIENTRY shared_dispatch_stub_717(GLuint buffer, GLintptr offset, GLsizeiptr length);
void APIENTRY shared_dispatch_stub_718(GLenum target, GLsizei numAttachments, const GLenum *attachments);
void APIENTRY shared_dispatch_stub_719(GLenum target, GLsizei numAttachments, const GLenum *attachments, GLint x, GLint y, GLsizei width, GLsizei height);
void APIENTRY shared_dispatch_stub_720(GLuint texture, GLint level);
void APIENTRY shared_dispatch_stub_721(GLuint texture, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth);
void APIENTRY shared_dispatch_stub_722(GLfloat factor, GLfloat bias);
void APIENTRY shared_dispatch_stub_723(GLfloat x, GLfloat y, GLfloat z, GLfloat width, GLfloat height);
void APIENTRY shared_dispatch_stub_724(const GLfloat *coords);
void APIENTRY shared_dispatch_stub_725(GLint x, GLint y, GLint z, GLint width, GLint height);
void APIENTRY shared_dispatch_stub_726(const GLint *coords);
void APIENTRY shared_dispatch_stub_727(GLshort x, GLshort y, GLshort z, GLshort width, GLshort height);
void APIENTRY shared_dispatch_stub_728(const GLshort *coords);
void APIENTRY shared_dispatch_stub_729(GLfixed x, GLfixed y, GLfixed z, GLfixed width, GLfixed height);
void APIENTRY shared_dispatch_stub_730(const GLfixed *coords);
void APIENTRY shared_dispatch_stub_731(GLenum type, GLsizei stride, const GLvoid *pointer);
GLbitfield APIENTRY shared_dispatch_stub_732(GLfixed *mantissa, GLint *exponent);
void APIENTRY shared_dispatch_stub_733(GLclampf value, GLboolean invert);
void APIENTRY shared_dispatch_stub_734(GLenum pattern);
void APIENTRY shared_dispatch_stub_735(GLint size, GLenum type, GLsizei stride, GLsizei count, const GLvoid *pointer);
void APIENTRY shared_dispatch_stub_736(GLsizei stride, GLsizei count, const GLboolean *pointer);
void APIENTRY shared_dispatch_stub_737(GLenum type, GLsizei stride, GLsizei count, const GLvoid *pointer);
void APIENTRY shared_dispatch_stub_738(GLenum type, GLsizei stride, GLsizei count, const GLvoid *pointer);
void APIENTRY shared_dispatch_stub_739(GLint size, GLenum type, GLsizei stride, GLsizei count, const GLvoid *pointer);
void APIENTRY shared_dispatch_stub_740(GLint size, GLenum type, GLsizei stride, GLsizei count, const GLvoid *pointer);
void APIENTRY shared_dispatch_stub_741(GLenum pname, GLfloat param);
void APIENTRY shared_dispatch_stub_742(GLenum pname, const GLfloat *params);
void APIENTRY shared_dispatch_stub_743(GLint first, GLsizei count);
void APIENTRY shared_dispatch_stub_744(void);
void APIENTRY shared_dispatch_stub_745(GLbyte red, GLbyte green, GLbyte blue);
void APIENTRY shared_dispatch_stub_746(const GLbyte *v);
void APIENTRY shared_dispatch_stub_747(GLdouble red, GLdouble green, GLdouble blue);
void APIENTRY shared_dispatch_stub_748(const GLdouble *v);
void APIENTRY shared_dispatch_stub_749(GLfloat red, GLfloat green, GLfloat blue);
void APIENTRY shared_dispatch_stub_750(const GLfloat *v);
void APIENTRY shared_dispatch_stub_751(GLint red, GLint green, GLint blue);
void APIENTRY shared_dispatch_stub_752(const GLint *v);
void APIENTRY shared_dispatch_stub_753(GLshort red, GLshort green, GLshort blue);
void APIENTRY shared_dispatch_stub_754(const GLshort *v);
void APIENTRY shared_dispatch_stub_755(GLubyte red, GLubyte green, GLubyte blue);
void APIENTRY shared_dispatch_stub_756(const GLubyte *v);
void APIENTRY shared_dispatch_stub_757(GLuint red, GLuint green, GLuint blue);
void APIENTRY shared_dispatch_stub_758(const GLuint *v);
void APIENTRY shared_dispatch_stub_759(GLushort red, GLushort green, GLushort blue);
void APIENTRY shared_dispatch_stub_760(const GLushort *v);
void APIENTRY shared_dispatch_stub_761(GLint size, GLenum type, GLsizei stride, const GLvoid *pointer);
void APIENTRY shared_dispatch_stub_762(GLenum mode, const GLint *first, const GLsizei *count, GLsizei primcount);
void APIENTRY shared_dispatch_stub_763(GLenum mode, const GLsizei *count, GLenum type, const GLvoid **indices, GLsizei primcount);
void APIENTRY shared_dispatch_stub_764(GLenum type, GLsizei stride, const GLvoid *pointer);
void APIENTRY shared_dispatch_stub_765(GLdouble coord);
void APIENTRY shared_dispatch_stub_766(const GLdouble *coord);
void APIENTRY shared_dispatch_stub_767(GLfloat coord);
void APIENTRY shared_dispatch_stub_768(const GLfloat *coord);
void APIENTRY shared_dispatch_stub_769(GLenum sfactorRGB, GLenum dfactorRGB, GLenum sfactorAlpha, GLenum dfactorAlpha);
void APIENTRY shared_dispatch_stub_770(void);
void APIENTRY shared_dispatch_stub_771(GLdouble x, GLdouble y);
void APIENTRY shared_dispatch_stub_772(const GLdouble *v);
void APIENTRY shared_dispatch_stub_773(GLfloat x, GLfloat y);
void APIENTRY shared_dispatch_stub_774(const GLfloat *v);
void APIENTRY shared_dispatch_stub_775(GLint x, GLint y);
void APIENTRY shared_dispatch_stub_776(const GLint *v);
void APIENTRY shared_dispatch_stub_777(GLshort x, GLshort y);
void APIENTRY shared_dispatch_stub_778(const GLshort *v);
void APIENTRY shared_dispatch_stub_779(GLdouble x, GLdouble y, GLdouble z);
void APIENTRY shared_dispatch_stub_780(const GLdouble *v);
void APIENTRY shared_dispatch_stub_781(GLfloat x, GLfloat y, GLfloat z);
void APIENTRY shared_dispatch_stub_782(const GLfloat *v);
void APIENTRY shared_dispatch_stub_783(GLint x, GLint y, GLint z);
void APIENTRY shared_dispatch_stub_784(const GLint *v);
void APIENTRY shared_dispatch_stub_785(GLshort x, GLshort y, GLshort z);
void APIENTRY shared_dispatch_stub_786(const GLshort *v);
void APIENTRY shared_dispatch_stub_787(GLdouble x, GLdouble y, GLdouble z, GLdouble w);
void APIENTRY shared_dispatch_stub_788(const GLdouble *v);
void APIENTRY shared_dispatch_stub_789(GLfloat x, GLfloat y, GLfloat z, GLfloat w);
void APIENTRY shared_dispatch_stub_790(const GLfloat *v);
void APIENTRY shared_dispatch_stub_791(GLint x, GLint y, GLint z, GLint w);
void APIENTRY shared_dispatch_stub_792(const GLint *v);
void APIENTRY shared_dispatch_stub_793(GLshort x, GLshort y, GLshort z, GLshort w);
void APIENTRY shared_dispatch_stub_794(const GLshort *v);
void APIENTRY shared_dispatch_stub_795(const GLenum *mode, const GLint *first, const GLsizei *count, GLsizei primcount, GLint modestride);
void APIENTRY shared_dispatch_stub_796(const GLenum *mode, const GLsizei *count, GLenum type, const GLvoid * const *indices, GLsizei primcount, GLint modestride);
GLboolean APIENTRY shared_dispatch_stub_797(GLsizei n, const GLuint *ids, GLboolean *residences);
void APIENTRY shared_dispatch_stub_798(GLenum target, GLuint program);
void APIENTRY shared_dispatch_stub_799(GLsizei n, const GLuint *programs);
void APIENTRY shared_dispatch_stub_800(GLenum target, GLuint id, const GLfloat *params);
void APIENTRY shared_dispatch_stub_801(GLsizei n, GLuint *programs);
void APIENTRY shared_dispatch_stub_802(GLenum target, GLuint index, GLenum pname, GLdouble *params);
void APIENTRY shared_dispatch_stub_803(GLenum target, GLuint index, GLenum pname, GLfloat *params);
void APIENTRY shared_dispatch_stub_804(GLuint id, GLenum pname, GLubyte *program);
void APIENTRY shared_dispatch_stub_805(GLuint id, GLenum pname, GLint *params);
void APIENTRY shared_dispatch_stub_806(GLenum target, GLuint address, GLenum pname, GLint *params);
void APIENTRY shared_dispatch_stub_807(GLuint index, GLenum pname, GLvoid **pointer);
void APIENTRY shared_dispatch_stub_808(GLuint index, GLenum pname, GLdouble *params);
void APIENTRY shared_dispatch_stub_809(GLuint index, GLenum pname, GLfloat *params);
void APIENTRY shared_dispatch_stub_810(GLuint index, GLenum pname, GLint *params);
GLboolean APIENTRY shared_dispatch_stub_811(GLuint program);
void APIENTRY shared_dispatch_stub_812(GLenum target, GLuint id, GLsizei len, const GLubyte *program);
void APIENTRY shared_dispatch_stub_813(GLenum target, GLuint index, GLsizei num, const GLdouble *params);
void APIENTRY shared_dispatch_stub_814(GLenum target, GLuint index, GLsizei num, const GLfloat *params);
void APIENTRY shared_dispatch_stub_815(GLsizei n, const GLuint *ids);
void APIENTRY shared_dispatch_stub_816(GLenum target, GLuint address, GLenum matrix, GLenum transform);
void APIENTRY shared_dispatch_stub_817(GLuint index, GLdouble x);
void APIENTRY shared_dispatch_stub_818(GLuint index, const GLdouble *v);
void APIENTRY shared_dispatch_stub_819(GLuint index, GLfloat x);
void APIENTRY shared_dispatch_stub_820(GLuint index, const GLfloat *v);
void APIENTRY shared_dispatch_stub_821(GLuint index, GLshort x);
void APIENTRY shared_dispatch_stub_822(GLuint index, const GLshort *v);
void APIENTRY shared_dispatch_stub_823(GLuint index, GLdouble x, GLdouble y);
void APIENTRY shared_dispatch_stub_824(GLuint index, const GLdouble *v);
void APIENTRY shared_dispatch_stub_825(GLuint index, GLfloat x, GLfloat y);
void APIENTRY shared_dispatch_stub_826(GLuint index, const GLfloat *v);
void APIENTRY shared_dispatch_stub_827(GLuint index, GLshort x, GLshort y);
void APIENTRY shared_dispatch_stub_828(GLuint index, const GLshort *v);
void APIENTRY shared_dispatch_stub_829(GLuint index, GLdouble x, GLdouble y, GLdouble z);
void APIENTRY shared_dispatch_stub_830(GLuint index, const GLdouble *v);
void APIENTRY shared_dispatch_stub_831(GLuint index, GLfloat x, GLfloat y, GLfloat z);
void APIENTRY shared_dispatch_stub_832(GLuint index, const GLfloat *v);
void APIENTRY shared_dispatch_stub_833(GLuint index, GLshort x, GLshort y, GLshort z);
void APIENTRY shared_dispatch_stub_834(GLuint index, const GLshort *v);
void APIENTRY shared_dispatch_stub_835(GLuint index, GLdouble x, GLdouble y, GLdouble z, GLdouble w);
void APIENTRY shared_dispatch_stub_836(GLuint index, const GLdouble *v);
void APIENTRY shared_dispatch_stub_837(GLuint index, GLfloat x, GLfloat y, GLfloat z, GLfloat w);
void APIENTRY shared_dispatch_stub_838(GLuint index, const GLfloat *v);
void APIENTRY shared_dispatch_stub_839(GLuint index, GLshort x, GLshort y, GLshort z, GLshort w);
void APIENTRY shared_dispatch_stub_840(GLuint index, const GLshort *v);
void APIENTRY shared_dispatch_stub_841(GLuint index, GLubyte x, GLubyte y, GLubyte z, GLubyte w);
void APIENTRY shared_dispatch_stub_842(GLuint index, const GLubyte *v);
void APIENTRY shared_dispatch_stub_843(GLuint index, GLint size, GLenum type, GLsizei stride, const GLvoid *pointer);
void APIENTRY shared_dispatch_stub_844(GLuint index, GLsizei n, const GLdouble *v);
void APIENTRY shared_dispatch_stub_845(GLuint index, GLsizei n, const GLfloat *v);
void APIENTRY shared_dispatch_stub_846(GLuint index, GLsizei n, const GLshort *v);
void APIENTRY shared_dispatch_stub_847(GLuint index, GLsizei n, const GLdouble *v);
void APIENTRY shared_dispatch_stub_848(GLuint index, GLsizei n, const GLfloat *v);
void APIENTRY shared_dispatch_stub_849(GLuint index, GLsizei n, const GLshort *v);
void APIENTRY shared_dispatch_stub_850(GLuint index, GLsizei n, const GLdouble *v);
void APIENTRY shared_dispatch_stub_851(GLuint index, GLsizei n, const GLfloat *v);
void APIENTRY shared_dispatch_stub_852(GLuint index, GLsizei n, const GLshort *v);
void APIENTRY shared_dispatch_stub_853(GLuint index, GLsizei n, const GLdouble *v);
void APIENTRY shared_dispatch_stub_854(GLuint index, GLsizei n, const GLfloat *v);
void APIENTRY shared_dispatch_stub_855(GLuint index, GLsizei n, const GLshort *v);
void APIENTRY shared_dispatch_stub_856(GLuint index, GLsizei n, const GLubyte *v);
void APIENTRY shared_dispatch_stub_857(GLenum pname, GLfloat *param);
void APIENTRY shared_dispatch_stub_858(GLenum pname, GLint *param);
void APIENTRY shared_dispatch_stub_859(GLenum pname, const GLfloat *param);
void APIENTRY shared_dispatch_stub_860(GLenum pname, const GLint *param);
void APIENTRY shared_dispatch_stub_861(GLenum op, GLuint dst, GLuint dstMod, GLuint arg1, GLuint arg1Rep, GLuint arg1Mod);
void APIENTRY shared_dispatch_stub_862(GLenum op, GLuint dst, GLuint dstMod, GLuint arg1, GLuint arg1Rep, GLuint arg1Mod, GLuint arg2, GLuint arg2Rep, GLuint arg2Mod);
void APIENTRY shared_dispatch_stub_863(GLenum op, GLuint dst, GLuint dstMod, GLuint arg1, GLuint arg1Rep, GLuint arg1Mod, GLuint arg2, GLuint arg2Rep, GLuint arg2Mod, GLuint arg3, GLuint arg3Rep, GLuint arg3Mod);
void APIENTRY shared_dispatch_stub_864(void);
void APIENTRY shared_dispatch_stub_865(GLuint id);
void APIENTRY shared_dispatch_stub_866(GLenum op, GLuint dst, GLuint dstMask, GLuint dstMod, GLuint arg1, GLuint arg1Rep, GLuint arg1Mod);
void APIENTRY shared_dispatch_stub_867(GLenum op, GLuint dst, GLuint dstMask, GLuint dstMod, GLuint arg1, GLuint arg1Rep, GLuint arg1Mod, GLuint arg2, GLuint arg2Rep, GLuint arg2Mod);
void APIENTRY shared_dispatch_stub_868(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);
void APIENTRY shared_dispatch_stub_869(GLuint id);
void APIENTRY shared_dispatch_stub_870(void);
GLuint APIENTRY shared_dispatch_stub_871(GLuint range);
void APIENTRY shared_dispatch_stub_872(GLuint dst, GLuint coord, GLenum swizzle);
void APIENTRY shared_dispatch_stub_873(GLuint dst, GLuint interp, GLenum swizzle);
void APIENTRY shared_dispatch_stub_874(GLuint dst, const GLfloat *value);
void APIENTRY shared_dispatch_stub_875(GLenum pname, GLint param);
void APIENTRY shared_dispatch_stub_876(GLenum pname, const GLint *params);
void APIENTRY shared_dispatch_stub_877(GLenum face);
void APIENTRY shared_dispatch_stub_878(GLuint array);
void APIENTRY shared_dispatch_stub_879(GLsizei n, const GLuint *arrays);
void APIENTRY shared_dispatch_stub_880(GLsizei n, GLuint *arrays);
GLboolean APIENTRY shared_dispatch_stub_881(GLuint array);
void APIENTRY shared_dispatch_stub_882(GLuint id, GLsizei len, const GLubyte *name, GLdouble *params);
void APIENTRY shared_dispatch_stub_883(GLuint id, GLsizei len, const GLubyte *name, GLfloat *params);
void APIENTRY shared_dispatch_stub_884(GLuint id, GLsizei len, const GLubyte *name, GLdouble x, GLdouble y, GLdouble z, GLdouble w);
void APIENTRY shared_dispatch_stub_885(GLuint id, GLsizei len, const GLubyte *name, const GLdouble *v);
void APIENTRY shared_dispatch_stub_886(GLuint id, GLsizei len, const GLubyte *name, GLfloat x, GLfloat y, GLfloat z, GLfloat w);
void APIENTRY shared_dispatch_stub_887(GLuint id, GLsizei len, const GLubyte *name, const GLfloat *v);
void APIENTRY shared_dispatch_stub_888(GLuint index);
void APIENTRY shared_dispatch_stub_889(void);
void APIENTRY shared_dispatch_stub_890(GLenum func, GLclampx ref);
void APIENTRY shared_dispatch_stub_891(GLclampx red, GLclampx green, GLclampx blue, GLclampx alpha);
void APIENTRY shared_dispatch_stub_892(GLclampx depth);
void APIENTRY shared_dispatch_stub_893(GLenum plane, const GLfixed *equation);
void APIENTRY shared_dispatch_stub_894(GLfixed red, GLfixed green, GLfixed blue, GLfixed alpha);
void APIENTRY shared_dispatch_stub_895(GLclampx zNear, GLclampx zFar);
void APIENTRY shared_dispatch_stub_896(GLenum pname, GLfixed param);
void APIENTRY shared_dispatch_stub_897(GLenum pname, const GLfixed *params);
void APIENTRY shared_dispatch_stub_898(GLfixed left, GLfixed right, GLfixed bottom, GLfixed top, GLfixed zNear, GLfixed zFar);
void APIENTRY shared_dispatch_stub_899(GLenum plane, GLfixed *equation);
void APIENTRY shared_dispatch_stub_900(GLenum pname, GLfixed *params);
void APIENTRY shared_dispatch_stub_901(GLenum light, GLenum pname, GLfixed *params);
void APIENTRY shared_dispatch_stub_902(GLenum face, GLenum pname, GLfixed *params);
void APIENTRY shared_dispatch_stub_903(GLenum target, GLenum pname, GLfixed *params);
void APIENTRY shared_dispatch_stub_904(GLenum coord, GLenum pname, GLfixed *params);
void APIENTRY shared_dispatch_stub_905(GLenum target, GLenum pname, GLfixed *params);
void APIENTRY shared_dispatch_stub_906(GLenum pname, GLfixed param);
void APIENTRY shared_dispatch_stub_907(GLenum pname, const GLfixed *params);
void APIENTRY shared_dispatch_stub_908(GLenum light, GLenum pname, GLfixed param);
void APIENTRY shared_dispatch_stub_909(GLenum light, GLenum pname, const GLfixed *params);
void APIENTRY shared_dispatch_stub_910(GLfixed width);
void APIENTRY shared_dispatch_stub_911(const GLfixed *m);
void APIENTRY shared_dispatch_stub_912(GLenum face, GLenum pname, GLfixed param);
void APIENTRY shared_dispatch_stub_913(GLenum face, GLenum pname, const GLfixed *params);
void APIENTRY shared_dispatch_stub_914(const GLfixed *m);
void APIENTRY shared_dispatch_stub_915(GLenum target, GLfixed s, GLfixed t, GLfixed r, GLfixed q);
void APIENTRY shared_dispatch_stub_916(GLfixed nx, GLfixed ny, GLfixed nz);
void APIENTRY shared_dispatch_stub_917(GLfixed left, GLfixed right, GLfixed bottom, GLfixed top, GLfixed zNear, GLfixed zFar);
void APIENTRY shared_dispatch_stub_918(GLenum pname, GLfixed param);
void APIENTRY shared_dispatch_stub_919(GLenum pname, const GLfixed *params);
void APIENTRY shared_dispatch_stub_920(GLfixed size);
void APIENTRY shared_dispatch_stub_921(GLfixed factor, GLfixed units);
void APIENTRY shared_dispatch_stub_922(GLfixed angle, GLfixed x, GLfixed y, GLfixed z);
void APIENTRY shared_dispatch_stub_923(GLclampx value, GLboolean invert);
void APIENTRY shared_dispatch_stub_924(GLfixed x, GLfixed y, GLfixed z);
void APIENTRY shared_dispatch_stub_925(GLenum target, GLenum pname, GLfixed param);
void APIENTRY shared_dispatch_stub_926(GLenum target, GLenum pname, const GLfixed *params);
void APIENTRY shared_dispatch_stub_927(GLenum coord, GLenum pname, GLint param);
void APIENTRY shared_dispatch_stub_928(GLenum coord, GLenum pname, const GLfixed *params);
void APIENTRY shared_dispatch_stub_929(GLenum target, GLenum pname, GLfixed param);
void APIENTRY shared_dispatch_stub_930(GLenum target, GLenum pname, const GLfixed *params);
void APIENTRY shared_dispatch_stub_931(GLfixed x, GLfixed y, GLfixed z);
void APIENTRY shared_dispatch_stub_932(GLenum plane, const GLfloat *equation);
void APIENTRY shared_dispatch_stub_933(GLfloat left, GLfloat right, GLfloat bottom, GLfloat top, GLfloat zNear, GLfloat zFar);
void APIENTRY shared_dispatch_stub_934(GLenum plane, GLfloat *equation);
void APIENTRY shared_dispatch_stub_935(GLfloat left, GLfloat right, GLfloat bottom, GLfloat top, GLfloat zNear, GLfloat zFar);
void APIENTRY shared_dispatch_stub_936(GLclampd zmin, GLclampd zmax);
void APIENTRY shared_dispatch_stub_937(GLenum modeRGB, GLenum modeA);
void APIENTRY shared_dispatch_stub_938(GLenum target, GLuint framebuffer);
void APIENTRY shared_dispatch_stub_939(GLenum target, GLuint renderbuffer);
GLenum APIENTRY shared_dispatch_stub_940(GLenum target);
void APIENTRY shared_dispatch_stub_941(GLsizei n, const GLuint *framebuffers);
void APIENTRY shared_dispatch_stub_942(GLsizei n, const GLuint *renderbuffers);
void APIENTRY shared_dispatch_stub_943(GLenum target, GLenum attachment, GLenum renderbuffertarget, GLuint renderbuffer);
void APIENTRY shared_dispatch_stub_944(GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level);
void APIENTRY shared_dispatch_stub_945(GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level);
void APIENTRY shared_dispatch_stub_946(GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level, GLint zoffset);
void APIENTRY shared_dispatch_stub_947(GLsizei n, GLuint *framebuffers);
void APIENTRY shared_dispatch_stub_948(GLsizei n, GLuint *renderbuffers);
void APIENTRY shared_dispatch_stub_949(GLenum target);
void APIENTRY shared_dispatch_stub_950(GLenum target, GLenum attachment, GLenum pname, GLint *params);
void APIENTRY shared_dispatch_stub_951(GLenum target, GLenum pname, GLint *params);
GLboolean APIENTRY shared_dispatch_stub_952(GLuint framebuffer);
GLboolean APIENTRY shared_dispatch_stub_953(GLuint renderbuffer);
void APIENTRY shared_dispatch_stub_954(GLenum target, GLenum internalformat, GLsizei width, GLsizei height);
void APIENTRY shared_dispatch_stub_955(GLint srcX0, GLint srcY0, GLint srcX1, GLint srcY1, GLint dstX0, GLint dstY0, GLint dstX1, GLint dstY1, GLbitfield mask, GLenum filter);
void APIENTRY shared_dispatch_stub_956(GLenum target, GLenum pname, GLint param);
void APIENTRY shared_dispatch_stub_957(GLenum target, GLintptr offset, GLsizeiptr size);
void APIENTRY shared_dispatch_stub_958(GLuint program, GLuint colorNumber, const GLchar *name);
GLint APIENTRY shared_dispatch_stub_959(GLuint program, const GLchar *name);
void APIENTRY shared_dispatch_stub_960(GLuint program, GLint location, GLuint *params);
void APIENTRY shared_dispatch_stub_961(GLuint index, GLenum pname, GLint *params);
void APIENTRY shared_dispatch_stub_962(GLuint index, GLenum pname, GLuint *params);
void APIENTRY shared_dispatch_stub_963(GLint location, GLuint x);
void APIENTRY shared_dispatch_stub_964(GLint location, GLsizei count, const GLuint *value);
void APIENTRY shared_dispatch_stub_965(GLint location, GLuint x, GLuint y);
void APIENTRY shared_dispatch_stub_966(GLint location, GLsizei count, const GLuint *value);
void APIENTRY shared_dispatch_stub_967(GLint location, GLuint x, GLuint y, GLuint z);
void APIENTRY shared_dispatch_stub_968(GLint location, GLsizei count, const GLuint *value);
void APIENTRY shared_dispatch_stub_969(GLint location, GLuint x, GLuint y, GLuint z, GLuint w);
void APIENTRY shared_dispatch_stub_970(GLint location, GLsizei count, const GLuint *value);
void APIENTRY shared_dispatch_stub_971(GLuint index, GLint x);
void APIENTRY shared_dispatch_stub_972(GLuint index, const GLint *v);
void APIENTRY shared_dispatch_stub_973(GLuint index, GLuint x);
void APIENTRY shared_dispatch_stub_974(GLuint index, const GLuint *v);
void APIENTRY shared_dispatch_stub_975(GLuint index, GLint x, GLint y);
void APIENTRY shared_dispatch_stub_976(GLuint index, const GLint *v);
void APIENTRY shared_dispatch_stub_977(GLuint index, GLuint x, GLuint y);
void APIENTRY shared_dispatch_stub_978(GLuint index, const GLuint *v);
void APIENTRY shared_dispatch_stub_979(GLuint index, GLint x, GLint y, GLint z);
void APIENTRY shared_dispatch_stub_980(GLuint index, const GLint *v);
void APIENTRY shared_dispatch_stub_981(GLuint index, GLuint x, GLuint y, GLuint z);
void APIENTRY shared_dispatch_stub_982(GLuint index, const GLuint *v);
void APIENTRY shared_dispatch_stub_983(GLuint index, const GLbyte *v);
void APIENTRY shared_dispatch_stub_984(GLuint index, GLint x, GLint y, GLint z, GLint w);
void APIENTRY shared_dispatch_stub_985(GLuint index, const GLint *v);
void APIENTRY shared_dispatch_stub_986(GLuint index, const GLshort *v);
void APIENTRY shared_dispatch_stub_987(GLuint index, const GLubyte *v);
void APIENTRY shared_dispatch_stub_988(GLuint index, GLuint x, GLuint y, GLuint z, GLuint w);
void APIENTRY shared_dispatch_stub_989(GLuint index, const GLuint *v);
void APIENTRY shared_dispatch_stub_990(GLuint index, const GLushort *v);
void APIENTRY shared_dispatch_stub_991(GLuint index, GLint size, GLenum type, GLsizei stride, const GLvoid *pointer);
void APIENTRY shared_dispatch_stub_992(GLenum target, GLenum attachment, GLuint texture, GLint level, GLint layer);
void APIENTRY shared_dispatch_stub_993(GLuint buf, GLboolean r, GLboolean g, GLboolean b, GLboolean a);
void APIENTRY shared_dispatch_stub_994(GLenum target, GLuint index);
void APIENTRY shared_dispatch_stub_995(GLenum target, GLuint index);
void APIENTRY shared_dispatch_stub_996(GLenum value, GLuint index, GLboolean *data);
void APIENTRY shared_dispatch_stub_997(GLenum value, GLuint index, GLint *data);
GLboolean APIENTRY shared_dispatch_stub_998(GLenum target, GLuint index);
void APIENTRY shared_dispatch_stub_999(GLint r, GLint g, GLint b, GLint a);
void APIENTRY shared_dispatch_stub_1000(GLuint r, GLuint g, GLuint b, GLuint a);
void APIENTRY shared_dispatch_stub_1001(GLenum target, GLenum pname, GLint *params);
void APIENTRY shared_dispatch_stub_1002(GLenum target, GLenum pname, GLuint *params);
void APIENTRY shared_dispatch_stub_1003(GLenum target, GLenum pname, const GLint *params);
void APIENTRY shared_dispatch_stub_1004(GLenum target, GLenum pname, const GLuint *params);
void APIENTRY shared_dispatch_stub_1005(GLuint query, GLenum mode);
void APIENTRY shared_dispatch_stub_1006(void);
void APIENTRY shared_dispatch_stub_1007(GLenum mode);
void APIENTRY shared_dispatch_stub_1008(GLenum target, GLuint index, GLuint buffer);
void APIENTRY shared_dispatch_stub_1009(GLenum target, GLuint index, GLuint buffer, GLintptr offset);
void APIENTRY shared_dispatch_stub_1010(GLenum target, GLuint index, GLuint buffer, GLintptr offset, GLsizeiptr size);
void APIENTRY shared_dispatch_stub_1011(void);
void APIENTRY shared_dispatch_stub_1012(GLuint program, GLuint index, GLsizei bufSize, GLsizei *length, GLsizei *size, GLenum *type, GLchar *name);
void APIENTRY shared_dispatch_stub_1013(GLuint program, GLsizei count, const char **varyings, GLenum bufferMode);
void APIENTRY shared_dispatch_stub_1014(GLenum mode);
void APIENTRY shared_dispatch_stub_1015(GLenum objectType, GLuint name, GLenum pname, GLint *value);
GLenum APIENTRY shared_dispatch_stub_1016(GLenum objectType, GLuint name, GLenum option);
GLenum APIENTRY shared_dispatch_stub_1017(GLenum objectType, GLuint name, GLenum option);
void APIENTRY shared_dispatch_stub_1018(GLuint program);
GLuint APIENTRY shared_dispatch_stub_1019(GLenum type, const GLchar *string);
void APIENTRY shared_dispatch_stub_1020(GLenum type, GLuint program);
void APIENTRY shared_dispatch_stub_1021(void);
void APIENTRY shared_dispatch_stub_1022(GLenum frontfunc, GLenum backfunc, GLint ref, GLuint mask);
void APIENTRY shared_dispatch_stub_1023(GLenum target, GLuint index, GLsizei count, const GLfloat *params);
void APIENTRY shared_dispatch_stub_1024(GLenum target, GLuint index, GLsizei count, const GLfloat *params);
void APIENTRY shared_dispatch_stub_1025(GLuint id, GLenum pname, GLint64EXT *params);
void APIENTRY shared_dispatch_stub_1026(GLuint id, GLenum pname, GLuint64EXT *params);
void APIENTRY shared_dispatch_stub_1027(GLenum target, GLvoid *writeOffset);
void APIENTRY shared_dispatch_stub_1028(GLenum target, GLvoid *writeOffset);
#undef MAPI_TMP_DEFINES
#endif /* MAPI_TMP_DEFINES */

#ifdef MAPI_TMP_TABLE
#define MAPI_TABLE_NUM_STATIC 1029
#define MAPI_TABLE_NUM_DYNAMIC 256
#undef MAPI_TMP_TABLE
#endif /* MAPI_TMP_TABLE */

#ifdef MAPI_TMP_NOOP_ARRAY
#ifdef DEBUG

static void APIENTRY noopNewList(GLuint list, GLenum mode)
{
   (void) list; (void) mode;
   noop_warn("glNewList");
}

static void APIENTRY noopEndList(void)
{
      noop_warn("glEndList");
}

static void APIENTRY noopCallList(GLuint list)
{
   (void) list;
   noop_warn("glCallList");
}

static void APIENTRY noopCallLists(GLsizei n, GLenum type, const GLvoid *lists)
{
   (void) n; (void) type; (void) lists;
   noop_warn("glCallLists");
}

static void APIENTRY noopDeleteLists(GLuint list, GLsizei range)
{
   (void) list; (void) range;
   noop_warn("glDeleteLists");
}

static GLuint APIENTRY noopGenLists(GLsizei range)
{
   (void) range;
   noop_warn("glGenLists");
   return (GLuint) 0;
}

static void APIENTRY noopListBase(GLuint base)
{
   (void) base;
   noop_warn("glListBase");
}

static void APIENTRY noopBegin(GLenum mode)
{
   (void) mode;
   noop_warn("glBegin");
}

static void APIENTRY noopBitmap(GLsizei width, GLsizei height, GLfloat xorig, GLfloat yorig, GLfloat xmove, GLfloat ymove, const GLubyte *bitmap)
{
   (void) width; (void) height; (void) xorig; (void) yorig; (void) xmove; (void) ymove; (void) bitmap;
   noop_warn("glBitmap");
}

static void APIENTRY noopColor3b(GLbyte red, GLbyte green, GLbyte blue)
{
   (void) red; (void) green; (void) blue;
   noop_warn("glColor3b");
}

static void APIENTRY noopColor3bv(const GLbyte *v)
{
   (void) v;
   noop_warn("glColor3bv");
}

static void APIENTRY noopColor3d(GLdouble red, GLdouble green, GLdouble blue)
{
   (void) red; (void) green; (void) blue;
   noop_warn("glColor3d");
}

static void APIENTRY noopColor3dv(const GLdouble *v)
{
   (void) v;
   noop_warn("glColor3dv");
}

static void APIENTRY noopColor3f(GLfloat red, GLfloat green, GLfloat blue)
{
   (void) red; (void) green; (void) blue;
   noop_warn("glColor3f");
}

static void APIENTRY noopColor3fv(const GLfloat *v)
{
   (void) v;
   noop_warn("glColor3fv");
}

static void APIENTRY noopColor3i(GLint red, GLint green, GLint blue)
{
   (void) red; (void) green; (void) blue;
   noop_warn("glColor3i");
}

static void APIENTRY noopColor3iv(const GLint *v)
{
   (void) v;
   noop_warn("glColor3iv");
}

static void APIENTRY noopColor3s(GLshort red, GLshort green, GLshort blue)
{
   (void) red; (void) green; (void) blue;
   noop_warn("glColor3s");
}

static void APIENTRY noopColor3sv(const GLshort *v)
{
   (void) v;
   noop_warn("glColor3sv");
}

static void APIENTRY noopColor3ub(GLubyte red, GLubyte green, GLubyte blue)
{
   (void) red; (void) green; (void) blue;
   noop_warn("glColor3ub");
}

static void APIENTRY noopColor3ubv(const GLubyte *v)
{
   (void) v;
   noop_warn("glColor3ubv");
}

static void APIENTRY noopColor3ui(GLuint red, GLuint green, GLuint blue)
{
   (void) red; (void) green; (void) blue;
   noop_warn("glColor3ui");
}

static void APIENTRY noopColor3uiv(const GLuint *v)
{
   (void) v;
   noop_warn("glColor3uiv");
}

static void APIENTRY noopColor3us(GLushort red, GLushort green, GLushort blue)
{
   (void) red; (void) green; (void) blue;
   noop_warn("glColor3us");
}

static void APIENTRY noopColor3usv(const GLushort *v)
{
   (void) v;
   noop_warn("glColor3usv");
}

static void APIENTRY noopColor4b(GLbyte red, GLbyte green, GLbyte blue, GLbyte alpha)
{
   (void) red; (void) green; (void) blue; (void) alpha;
   noop_warn("glColor4b");
}

static void APIENTRY noopColor4bv(const GLbyte *v)
{
   (void) v;
   noop_warn("glColor4bv");
}

static void APIENTRY noopColor4d(GLdouble red, GLdouble green, GLdouble blue, GLdouble alpha)
{
   (void) red; (void) green; (void) blue; (void) alpha;
   noop_warn("glColor4d");
}

static void APIENTRY noopColor4dv(const GLdouble *v)
{
   (void) v;
   noop_warn("glColor4dv");
}

static void APIENTRY noopColor4f(GLfloat red, GLfloat green, GLfloat blue, GLfloat alpha)
{
   (void) red; (void) green; (void) blue; (void) alpha;
   noop_warn("glColor4f");
}

static void APIENTRY noopColor4fv(const GLfloat *v)
{
   (void) v;
   noop_warn("glColor4fv");
}

static void APIENTRY noopColor4i(GLint red, GLint green, GLint blue, GLint alpha)
{
   (void) red; (void) green; (void) blue; (void) alpha;
   noop_warn("glColor4i");
}

static void APIENTRY noopColor4iv(const GLint *v)
{
   (void) v;
   noop_warn("glColor4iv");
}

static void APIENTRY noopColor4s(GLshort red, GLshort green, GLshort blue, GLshort alpha)
{
   (void) red; (void) green; (void) blue; (void) alpha;
   noop_warn("glColor4s");
}

static void APIENTRY noopColor4sv(const GLshort *v)
{
   (void) v;
   noop_warn("glColor4sv");
}

static void APIENTRY noopColor4ub(GLubyte red, GLubyte green, GLubyte blue, GLubyte alpha)
{
   (void) red; (void) green; (void) blue; (void) alpha;
   noop_warn("glColor4ub");
}

static void APIENTRY noopColor4ubv(const GLubyte *v)
{
   (void) v;
   noop_warn("glColor4ubv");
}

static void APIENTRY noopColor4ui(GLuint red, GLuint green, GLuint blue, GLuint alpha)
{
   (void) red; (void) green; (void) blue; (void) alpha;
   noop_warn("glColor4ui");
}

static void APIENTRY noopColor4uiv(const GLuint *v)
{
   (void) v;
   noop_warn("glColor4uiv");
}

static void APIENTRY noopColor4us(GLushort red, GLushort green, GLushort blue, GLushort alpha)
{
   (void) red; (void) green; (void) blue; (void) alpha;
   noop_warn("glColor4us");
}

static void APIENTRY noopColor4usv(const GLushort *v)
{
   (void) v;
   noop_warn("glColor4usv");
}

static void APIENTRY noopEdgeFlag(GLboolean flag)
{
   (void) flag;
   noop_warn("glEdgeFlag");
}

static void APIENTRY noopEdgeFlagv(const GLboolean *flag)
{
   (void) flag;
   noop_warn("glEdgeFlagv");
}

static void APIENTRY noopEnd(void)
{
      noop_warn("glEnd");
}

static void APIENTRY noopIndexd(GLdouble c)
{
   (void) c;
   noop_warn("glIndexd");
}

static void APIENTRY noopIndexdv(const GLdouble *c)
{
   (void) c;
   noop_warn("glIndexdv");
}

static void APIENTRY noopIndexf(GLfloat c)
{
   (void) c;
   noop_warn("glIndexf");
}

static void APIENTRY noopIndexfv(const GLfloat *c)
{
   (void) c;
   noop_warn("glIndexfv");
}

static void APIENTRY noopIndexi(GLint c)
{
   (void) c;
   noop_warn("glIndexi");
}

static void APIENTRY noopIndexiv(const GLint *c)
{
   (void) c;
   noop_warn("glIndexiv");
}

static void APIENTRY noopIndexs(GLshort c)
{
   (void) c;
   noop_warn("glIndexs");
}

static void APIENTRY noopIndexsv(const GLshort *c)
{
   (void) c;
   noop_warn("glIndexsv");
}

static void APIENTRY noopNormal3b(GLbyte nx, GLbyte ny, GLbyte nz)
{
   (void) nx; (void) ny; (void) nz;
   noop_warn("glNormal3b");
}

static void APIENTRY noopNormal3bv(const GLbyte *v)
{
   (void) v;
   noop_warn("glNormal3bv");
}

static void APIENTRY noopNormal3d(GLdouble nx, GLdouble ny, GLdouble nz)
{
   (void) nx; (void) ny; (void) nz;
   noop_warn("glNormal3d");
}

static void APIENTRY noopNormal3dv(const GLdouble *v)
{
   (void) v;
   noop_warn("glNormal3dv");
}

static void APIENTRY noopNormal3f(GLfloat nx, GLfloat ny, GLfloat nz)
{
   (void) nx; (void) ny; (void) nz;
   noop_warn("glNormal3f");
}

static void APIENTRY noopNormal3fv(const GLfloat *v)
{
   (void) v;
   noop_warn("glNormal3fv");
}

static void APIENTRY noopNormal3i(GLint nx, GLint ny, GLint nz)
{
   (void) nx; (void) ny; (void) nz;
   noop_warn("glNormal3i");
}

static void APIENTRY noopNormal3iv(const GLint *v)
{
   (void) v;
   noop_warn("glNormal3iv");
}

static void APIENTRY noopNormal3s(GLshort nx, GLshort ny, GLshort nz)
{
   (void) nx; (void) ny; (void) nz;
   noop_warn("glNormal3s");
}

static void APIENTRY noopNormal3sv(const GLshort *v)
{
   (void) v;
   noop_warn("glNormal3sv");
}

static void APIENTRY noopRasterPos2d(GLdouble x, GLdouble y)
{
   (void) x; (void) y;
   noop_warn("glRasterPos2d");
}

static void APIENTRY noopRasterPos2dv(const GLdouble *v)
{
   (void) v;
   noop_warn("glRasterPos2dv");
}

static void APIENTRY noopRasterPos2f(GLfloat x, GLfloat y)
{
   (void) x; (void) y;
   noop_warn("glRasterPos2f");
}

static void APIENTRY noopRasterPos2fv(const GLfloat *v)
{
   (void) v;
   noop_warn("glRasterPos2fv");
}

static void APIENTRY noopRasterPos2i(GLint x, GLint y)
{
   (void) x; (void) y;
   noop_warn("glRasterPos2i");
}

static void APIENTRY noopRasterPos2iv(const GLint *v)
{
   (void) v;
   noop_warn("glRasterPos2iv");
}

static void APIENTRY noopRasterPos2s(GLshort x, GLshort y)
{
   (void) x; (void) y;
   noop_warn("glRasterPos2s");
}

static void APIENTRY noopRasterPos2sv(const GLshort *v)
{
   (void) v;
   noop_warn("glRasterPos2sv");
}

static void APIENTRY noopRasterPos3d(GLdouble x, GLdouble y, GLdouble z)
{
   (void) x; (void) y; (void) z;
   noop_warn("glRasterPos3d");
}

static void APIENTRY noopRasterPos3dv(const GLdouble *v)
{
   (void) v;
   noop_warn("glRasterPos3dv");
}

static void APIENTRY noopRasterPos3f(GLfloat x, GLfloat y, GLfloat z)
{
   (void) x; (void) y; (void) z;
   noop_warn("glRasterPos3f");
}

static void APIENTRY noopRasterPos3fv(const GLfloat *v)
{
   (void) v;
   noop_warn("glRasterPos3fv");
}

static void APIENTRY noopRasterPos3i(GLint x, GLint y, GLint z)
{
   (void) x; (void) y; (void) z;
   noop_warn("glRasterPos3i");
}

static void APIENTRY noopRasterPos3iv(const GLint *v)
{
   (void) v;
   noop_warn("glRasterPos3iv");
}

static void APIENTRY noopRasterPos3s(GLshort x, GLshort y, GLshort z)
{
   (void) x; (void) y; (void) z;
   noop_warn("glRasterPos3s");
}

static void APIENTRY noopRasterPos3sv(const GLshort *v)
{
   (void) v;
   noop_warn("glRasterPos3sv");
}

static void APIENTRY noopRasterPos4d(GLdouble x, GLdouble y, GLdouble z, GLdouble w)
{
   (void) x; (void) y; (void) z; (void) w;
   noop_warn("glRasterPos4d");
}

static void APIENTRY noopRasterPos4dv(const GLdouble *v)
{
   (void) v;
   noop_warn("glRasterPos4dv");
}

static void APIENTRY noopRasterPos4f(GLfloat x, GLfloat y, GLfloat z, GLfloat w)
{
   (void) x; (void) y; (void) z; (void) w;
   noop_warn("glRasterPos4f");
}

static void APIENTRY noopRasterPos4fv(const GLfloat *v)
{
   (void) v;
   noop_warn("glRasterPos4fv");
}

static void APIENTRY noopRasterPos4i(GLint x, GLint y, GLint z, GLint w)
{
   (void) x; (void) y; (void) z; (void) w;
   noop_warn("glRasterPos4i");
}

static void APIENTRY noopRasterPos4iv(const GLint *v)
{
   (void) v;
   noop_warn("glRasterPos4iv");
}

static void APIENTRY noopRasterPos4s(GLshort x, GLshort y, GLshort z, GLshort w)
{
   (void) x; (void) y; (void) z; (void) w;
   noop_warn("glRasterPos4s");
}

static void APIENTRY noopRasterPos4sv(const GLshort *v)
{
   (void) v;
   noop_warn("glRasterPos4sv");
}

static void APIENTRY noopRectd(GLdouble x1, GLdouble y1, GLdouble x2, GLdouble y2)
{
   (void) x1; (void) y1; (void) x2; (void) y2;
   noop_warn("glRectd");
}

static void APIENTRY noopRectdv(const GLdouble *v1, const GLdouble *v2)
{
   (void) v1; (void) v2;
   noop_warn("glRectdv");
}

static void APIENTRY noopRectf(GLfloat x1, GLfloat y1, GLfloat x2, GLfloat y2)
{
   (void) x1; (void) y1; (void) x2; (void) y2;
   noop_warn("glRectf");
}

static void APIENTRY noopRectfv(const GLfloat *v1, const GLfloat *v2)
{
   (void) v1; (void) v2;
   noop_warn("glRectfv");
}

static void APIENTRY noopRecti(GLint x1, GLint y1, GLint x2, GLint y2)
{
   (void) x1; (void) y1; (void) x2; (void) y2;
   noop_warn("glRecti");
}

static void APIENTRY noopRectiv(const GLint *v1, const GLint *v2)
{
   (void) v1; (void) v2;
   noop_warn("glRectiv");
}

static void APIENTRY noopRects(GLshort x1, GLshort y1, GLshort x2, GLshort y2)
{
   (void) x1; (void) y1; (void) x2; (void) y2;
   noop_warn("glRects");
}

static void APIENTRY noopRectsv(const GLshort *v1, const GLshort *v2)
{
   (void) v1; (void) v2;
   noop_warn("glRectsv");
}

static void APIENTRY noopTexCoord1d(GLdouble s)
{
   (void) s;
   noop_warn("glTexCoord1d");
}

static void APIENTRY noopTexCoord1dv(const GLdouble *v)
{
   (void) v;
   noop_warn("glTexCoord1dv");
}

static void APIENTRY noopTexCoord1f(GLfloat s)
{
   (void) s;
   noop_warn("glTexCoord1f");
}

static void APIENTRY noopTexCoord1fv(const GLfloat *v)
{
   (void) v;
   noop_warn("glTexCoord1fv");
}

static void APIENTRY noopTexCoord1i(GLint s)
{
   (void) s;
   noop_warn("glTexCoord1i");
}

static void APIENTRY noopTexCoord1iv(const GLint *v)
{
   (void) v;
   noop_warn("glTexCoord1iv");
}

static void APIENTRY noopTexCoord1s(GLshort s)
{
   (void) s;
   noop_warn("glTexCoord1s");
}

static void APIENTRY noopTexCoord1sv(const GLshort *v)
{
   (void) v;
   noop_warn("glTexCoord1sv");
}

static void APIENTRY noopTexCoord2d(GLdouble s, GLdouble t)
{
   (void) s; (void) t;
   noop_warn("glTexCoord2d");
}

static void APIENTRY noopTexCoord2dv(const GLdouble *v)
{
   (void) v;
   noop_warn("glTexCoord2dv");
}

static void APIENTRY noopTexCoord2f(GLfloat s, GLfloat t)
{
   (void) s; (void) t;
   noop_warn("glTexCoord2f");
}

static void APIENTRY noopTexCoord2fv(const GLfloat *v)
{
   (void) v;
   noop_warn("glTexCoord2fv");
}

static void APIENTRY noopTexCoord2i(GLint s, GLint t)
{
   (void) s; (void) t;
   noop_warn("glTexCoord2i");
}

static void APIENTRY noopTexCoord2iv(const GLint *v)
{
   (void) v;
   noop_warn("glTexCoord2iv");
}

static void APIENTRY noopTexCoord2s(GLshort s, GLshort t)
{
   (void) s; (void) t;
   noop_warn("glTexCoord2s");
}

static void APIENTRY noopTexCoord2sv(const GLshort *v)
{
   (void) v;
   noop_warn("glTexCoord2sv");
}

static void APIENTRY noopTexCoord3d(GLdouble s, GLdouble t, GLdouble r)
{
   (void) s; (void) t; (void) r;
   noop_warn("glTexCoord3d");
}

static void APIENTRY noopTexCoord3dv(const GLdouble *v)
{
   (void) v;
   noop_warn("glTexCoord3dv");
}

static void APIENTRY noopTexCoord3f(GLfloat s, GLfloat t, GLfloat r)
{
   (void) s; (void) t; (void) r;
   noop_warn("glTexCoord3f");
}

static void APIENTRY noopTexCoord3fv(const GLfloat *v)
{
   (void) v;
   noop_warn("glTexCoord3fv");
}

static void APIENTRY noopTexCoord3i(GLint s, GLint t, GLint r)
{
   (void) s; (void) t; (void) r;
   noop_warn("glTexCoord3i");
}

static void APIENTRY noopTexCoord3iv(const GLint *v)
{
   (void) v;
   noop_warn("glTexCoord3iv");
}

static void APIENTRY noopTexCoord3s(GLshort s, GLshort t, GLshort r)
{
   (void) s; (void) t; (void) r;
   noop_warn("glTexCoord3s");
}

static void APIENTRY noopTexCoord3sv(const GLshort *v)
{
   (void) v;
   noop_warn("glTexCoord3sv");
}

static void APIENTRY noopTexCoord4d(GLdouble s, GLdouble t, GLdouble r, GLdouble q)
{
   (void) s; (void) t; (void) r; (void) q;
   noop_warn("glTexCoord4d");
}

static void APIENTRY noopTexCoord4dv(const GLdouble *v)
{
   (void) v;
   noop_warn("glTexCoord4dv");
}

static void APIENTRY noopTexCoord4f(GLfloat s, GLfloat t, GLfloat r, GLfloat q)
{
   (void) s; (void) t; (void) r; (void) q;
   noop_warn("glTexCoord4f");
}

static void APIENTRY noopTexCoord4fv(const GLfloat *v)
{
   (void) v;
   noop_warn("glTexCoord4fv");
}

static void APIENTRY noopTexCoord4i(GLint s, GLint t, GLint r, GLint q)
{
   (void) s; (void) t; (void) r; (void) q;
   noop_warn("glTexCoord4i");
}

static void APIENTRY noopTexCoord4iv(const GLint *v)
{
   (void) v;
   noop_warn("glTexCoord4iv");
}

static void APIENTRY noopTexCoord4s(GLshort s, GLshort t, GLshort r, GLshort q)
{
   (void) s; (void) t; (void) r; (void) q;
   noop_warn("glTexCoord4s");
}

static void APIENTRY noopTexCoord4sv(const GLshort *v)
{
   (void) v;
   noop_warn("glTexCoord4sv");
}

static void APIENTRY noopVertex2d(GLdouble x, GLdouble y)
{
   (void) x; (void) y;
   noop_warn("glVertex2d");
}

static void APIENTRY noopVertex2dv(const GLdouble *v)
{
   (void) v;
   noop_warn("glVertex2dv");
}

static void APIENTRY noopVertex2f(GLfloat x, GLfloat y)
{
   (void) x; (void) y;
   noop_warn("glVertex2f");
}

static void APIENTRY noopVertex2fv(const GLfloat *v)
{
   (void) v;
   noop_warn("glVertex2fv");
}

static void APIENTRY noopVertex2i(GLint x, GLint y)
{
   (void) x; (void) y;
   noop_warn("glVertex2i");
}

static void APIENTRY noopVertex2iv(const GLint *v)
{
   (void) v;
   noop_warn("glVertex2iv");
}

static void APIENTRY noopVertex2s(GLshort x, GLshort y)
{
   (void) x; (void) y;
   noop_warn("glVertex2s");
}

static void APIENTRY noopVertex2sv(const GLshort *v)
{
   (void) v;
   noop_warn("glVertex2sv");
}

static void APIENTRY noopVertex3d(GLdouble x, GLdouble y, GLdouble z)
{
   (void) x; (void) y; (void) z;
   noop_warn("glVertex3d");
}

static void APIENTRY noopVertex3dv(const GLdouble *v)
{
   (void) v;
   noop_warn("glVertex3dv");
}

static void APIENTRY noopVertex3f(GLfloat x, GLfloat y, GLfloat z)
{
   (void) x; (void) y; (void) z;
   noop_warn("glVertex3f");
}

static void APIENTRY noopVertex3fv(const GLfloat *v)
{
   (void) v;
   noop_warn("glVertex3fv");
}

static void APIENTRY noopVertex3i(GLint x, GLint y, GLint z)
{
   (void) x; (void) y; (void) z;
   noop_warn("glVertex3i");
}

static void APIENTRY noopVertex3iv(const GLint *v)
{
   (void) v;
   noop_warn("glVertex3iv");
}

static void APIENTRY noopVertex3s(GLshort x, GLshort y, GLshort z)
{
   (void) x; (void) y; (void) z;
   noop_warn("glVertex3s");
}

static void APIENTRY noopVertex3sv(const GLshort *v)
{
   (void) v;
   noop_warn("glVertex3sv");
}

static void APIENTRY noopVertex4d(GLdouble x, GLdouble y, GLdouble z, GLdouble w)
{
   (void) x; (void) y; (void) z; (void) w;
   noop_warn("glVertex4d");
}

static void APIENTRY noopVertex4dv(const GLdouble *v)
{
   (void) v;
   noop_warn("glVertex4dv");
}

static void APIENTRY noopVertex4f(GLfloat x, GLfloat y, GLfloat z, GLfloat w)
{
   (void) x; (void) y; (void) z; (void) w;
   noop_warn("glVertex4f");
}

static void APIENTRY noopVertex4fv(const GLfloat *v)
{
   (void) v;
   noop_warn("glVertex4fv");
}

static void APIENTRY noopVertex4i(GLint x, GLint y, GLint z, GLint w)
{
   (void) x; (void) y; (void) z; (void) w;
   noop_warn("glVertex4i");
}

static void APIENTRY noopVertex4iv(const GLint *v)
{
   (void) v;
   noop_warn("glVertex4iv");
}

static void APIENTRY noopVertex4s(GLshort x, GLshort y, GLshort z, GLshort w)
{
   (void) x; (void) y; (void) z; (void) w;
   noop_warn("glVertex4s");
}

static void APIENTRY noopVertex4sv(const GLshort *v)
{
   (void) v;
   noop_warn("glVertex4sv");
}

static void APIENTRY noopClipPlane(GLenum plane, const GLdouble *equation)
{
   (void) plane; (void) equation;
   noop_warn("glClipPlane");
}

static void APIENTRY noopColorMaterial(GLenum face, GLenum mode)
{
   (void) face; (void) mode;
   noop_warn("glColorMaterial");
}

static void APIENTRY noopCullFace(GLenum mode)
{
   (void) mode;
   noop_warn("glCullFace");
}

static void APIENTRY noopFogf(GLenum pname, GLfloat param)
{
   (void) pname; (void) param;
   noop_warn("glFogf");
}

static void APIENTRY noopFogfv(GLenum pname, const GLfloat *params)
{
   (void) pname; (void) params;
   noop_warn("glFogfv");
}

static void APIENTRY noopFogi(GLenum pname, GLint param)
{
   (void) pname; (void) param;
   noop_warn("glFogi");
}

static void APIENTRY noopFogiv(GLenum pname, const GLint *params)
{
   (void) pname; (void) params;
   noop_warn("glFogiv");
}

static void APIENTRY noopFrontFace(GLenum mode)
{
   (void) mode;
   noop_warn("glFrontFace");
}

static void APIENTRY noopHint(GLenum target, GLenum mode)
{
   (void) target; (void) mode;
   noop_warn("glHint");
}

static void APIENTRY noopLightf(GLenum light, GLenum pname, GLfloat param)
{
   (void) light; (void) pname; (void) param;
   noop_warn("glLightf");
}

static void APIENTRY noopLightfv(GLenum light, GLenum pname, const GLfloat *params)
{
   (void) light; (void) pname; (void) params;
   noop_warn("glLightfv");
}

static void APIENTRY noopLighti(GLenum light, GLenum pname, GLint param)
{
   (void) light; (void) pname; (void) param;
   noop_warn("glLighti");
}

static void APIENTRY noopLightiv(GLenum light, GLenum pname, const GLint *params)
{
   (void) light; (void) pname; (void) params;
   noop_warn("glLightiv");
}

static void APIENTRY noopLightModelf(GLenum pname, GLfloat param)
{
   (void) pname; (void) param;
   noop_warn("glLightModelf");
}

static void APIENTRY noopLightModelfv(GLenum pname, const GLfloat *params)
{
   (void) pname; (void) params;
   noop_warn("glLightModelfv");
}

static void APIENTRY noopLightModeli(GLenum pname, GLint param)
{
   (void) pname; (void) param;
   noop_warn("glLightModeli");
}

static void APIENTRY noopLightModeliv(GLenum pname, const GLint *params)
{
   (void) pname; (void) params;
   noop_warn("glLightModeliv");
}

static void APIENTRY noopLineStipple(GLint factor, GLushort pattern)
{
   (void) factor; (void) pattern;
   noop_warn("glLineStipple");
}

static void APIENTRY noopLineWidth(GLfloat width)
{
   (void) width;
   noop_warn("glLineWidth");
}

static void APIENTRY noopMaterialf(GLenum face, GLenum pname, GLfloat param)
{
   (void) face; (void) pname; (void) param;
   noop_warn("glMaterialf");
}

static void APIENTRY noopMaterialfv(GLenum face, GLenum pname, const GLfloat *params)
{
   (void) face; (void) pname; (void) params;
   noop_warn("glMaterialfv");
}

static void APIENTRY noopMateriali(GLenum face, GLenum pname, GLint param)
{
   (void) face; (void) pname; (void) param;
   noop_warn("glMateriali");
}

static void APIENTRY noopMaterialiv(GLenum face, GLenum pname, const GLint *params)
{
   (void) face; (void) pname; (void) params;
   noop_warn("glMaterialiv");
}

static void APIENTRY noopPointSize(GLfloat size)
{
   (void) size;
   noop_warn("glPointSize");
}

static void APIENTRY noopPolygonMode(GLenum face, GLenum mode)
{
   (void) face; (void) mode;
   noop_warn("glPolygonMode");
}

static void APIENTRY noopPolygonStipple(const GLubyte *mask)
{
   (void) mask;
   noop_warn("glPolygonStipple");
}

static void APIENTRY noopScissor(GLint x, GLint y, GLsizei width, GLsizei height)
{
   (void) x; (void) y; (void) width; (void) height;
   noop_warn("glScissor");
}

static void APIENTRY noopShadeModel(GLenum mode)
{
   (void) mode;
   noop_warn("glShadeModel");
}

static void APIENTRY noopTexParameterf(GLenum target, GLenum pname, GLfloat param)
{
   (void) target; (void) pname; (void) param;
   noop_warn("glTexParameterf");
}

static void APIENTRY noopTexParameterfv(GLenum target, GLenum pname, const GLfloat *params)
{
   (void) target; (void) pname; (void) params;
   noop_warn("glTexParameterfv");
}

static void APIENTRY noopTexParameteri(GLenum target, GLenum pname, GLint param)
{
   (void) target; (void) pname; (void) param;
   noop_warn("glTexParameteri");
}

static void APIENTRY noopTexParameteriv(GLenum target, GLenum pname, const GLint *params)
{
   (void) target; (void) pname; (void) params;
   noop_warn("glTexParameteriv");
}

static void APIENTRY noopTexImage1D(GLenum target, GLint level, GLint internalformat, GLsizei width, GLint border, GLenum format, GLenum type, const GLvoid *pixels)
{
   (void) target; (void) level; (void) internalformat; (void) width; (void) border; (void) format; (void) type; (void) pixels;
   noop_warn("glTexImage1D");
}

static void APIENTRY noopTexImage2D(GLenum target, GLint level, GLint internalformat, GLsizei width, GLsizei height, GLint border, GLenum format, GLenum type, const GLvoid *pixels)
{
   (void) target; (void) level; (void) internalformat; (void) width; (void) height; (void) border; (void) format; (void) type; (void) pixels;
   noop_warn("glTexImage2D");
}

static void APIENTRY noopTexEnvf(GLenum target, GLenum pname, GLfloat param)
{
   (void) target; (void) pname; (void) param;
   noop_warn("glTexEnvf");
}

static void APIENTRY noopTexEnvfv(GLenum target, GLenum pname, const GLfloat *params)
{
   (void) target; (void) pname; (void) params;
   noop_warn("glTexEnvfv");
}

static void APIENTRY noopTexEnvi(GLenum target, GLenum pname, GLint param)
{
   (void) target; (void) pname; (void) param;
   noop_warn("glTexEnvi");
}

static void APIENTRY noopTexEnviv(GLenum target, GLenum pname, const GLint *params)
{
   (void) target; (void) pname; (void) params;
   noop_warn("glTexEnviv");
}

static void APIENTRY noopTexGend(GLenum coord, GLenum pname, GLdouble param)
{
   (void) coord; (void) pname; (void) param;
   noop_warn("glTexGend");
}

static void APIENTRY noopTexGendv(GLenum coord, GLenum pname, const GLdouble *params)
{
   (void) coord; (void) pname; (void) params;
   noop_warn("glTexGendv");
}

static void APIENTRY noopTexGenf(GLenum coord, GLenum pname, GLfloat param)
{
   (void) coord; (void) pname; (void) param;
   noop_warn("glTexGenf");
}

static void APIENTRY noopTexGenfv(GLenum coord, GLenum pname, const GLfloat *params)
{
   (void) coord; (void) pname; (void) params;
   noop_warn("glTexGenfv");
}

static void APIENTRY noopTexGeni(GLenum coord, GLenum pname, GLint param)
{
   (void) coord; (void) pname; (void) param;
   noop_warn("glTexGeni");
}

static void APIENTRY noopTexGeniv(GLenum coord, GLenum pname, const GLint *params)
{
   (void) coord; (void) pname; (void) params;
   noop_warn("glTexGeniv");
}

static void APIENTRY noopFeedbackBuffer(GLsizei size, GLenum type, GLfloat *buffer)
{
   (void) size; (void) type; (void) buffer;
   noop_warn("glFeedbackBuffer");
}

static void APIENTRY noopSelectBuffer(GLsizei size, GLuint *buffer)
{
   (void) size; (void) buffer;
   noop_warn("glSelectBuffer");
}

static GLint APIENTRY noopRenderMode(GLenum mode)
{
   (void) mode;
   noop_warn("glRenderMode");
   return (GLint) 0;
}

static void APIENTRY noopInitNames(void)
{
      noop_warn("glInitNames");
}

static void APIENTRY noopLoadName(GLuint name)
{
   (void) name;
   noop_warn("glLoadName");
}

static void APIENTRY noopPassThrough(GLfloat token)
{
   (void) token;
   noop_warn("glPassThrough");
}

static void APIENTRY noopPopName(void)
{
      noop_warn("glPopName");
}

static void APIENTRY noopPushName(GLuint name)
{
   (void) name;
   noop_warn("glPushName");
}

static void APIENTRY noopDrawBuffer(GLenum mode)
{
   (void) mode;
   noop_warn("glDrawBuffer");
}

static void APIENTRY noopClear(GLbitfield mask)
{
   (void) mask;
   noop_warn("glClear");
}

static void APIENTRY noopClearAccum(GLfloat red, GLfloat green, GLfloat blue, GLfloat alpha)
{
   (void) red; (void) green; (void) blue; (void) alpha;
   noop_warn("glClearAccum");
}

static void APIENTRY noopClearIndex(GLfloat c)
{
   (void) c;
   noop_warn("glClearIndex");
}

static void APIENTRY noopClearColor(GLclampf red, GLclampf green, GLclampf blue, GLclampf alpha)
{
   (void) red; (void) green; (void) blue; (void) alpha;
   noop_warn("glClearColor");
}

static void APIENTRY noopClearStencil(GLint s)
{
   (void) s;
   noop_warn("glClearStencil");
}

static void APIENTRY noopClearDepth(GLclampd depth)
{
   (void) depth;
   noop_warn("glClearDepth");
}

static void APIENTRY noopStencilMask(GLuint mask)
{
   (void) mask;
   noop_warn("glStencilMask");
}

static void APIENTRY noopColorMask(GLboolean red, GLboolean green, GLboolean blue, GLboolean alpha)
{
   (void) red; (void) green; (void) blue; (void) alpha;
   noop_warn("glColorMask");
}

static void APIENTRY noopDepthMask(GLboolean flag)
{
   (void) flag;
   noop_warn("glDepthMask");
}

static void APIENTRY noopIndexMask(GLuint mask)
{
   (void) mask;
   noop_warn("glIndexMask");
}

static void APIENTRY noopAccum(GLenum op, GLfloat value)
{
   (void) op; (void) value;
   noop_warn("glAccum");
}

static void APIENTRY noopDisable(GLenum cap)
{
   (void) cap;
   noop_warn("glDisable");
}

static void APIENTRY noopEnable(GLenum cap)
{
   (void) cap;
   noop_warn("glEnable");
}

static void APIENTRY noopFinish(void)
{
      noop_warn("glFinish");
}

static void APIENTRY noopFlush(void)
{
      noop_warn("glFlush");
}

static void APIENTRY noopPopAttrib(void)
{
      noop_warn("glPopAttrib");
}

static void APIENTRY noopPushAttrib(GLbitfield mask)
{
   (void) mask;
   noop_warn("glPushAttrib");
}

static void APIENTRY noopMap1d(GLenum target, GLdouble u1, GLdouble u2, GLint stride, GLint order, const GLdouble *points)
{
   (void) target; (void) u1; (void) u2; (void) stride; (void) order; (void) points;
   noop_warn("glMap1d");
}

static void APIENTRY noopMap1f(GLenum target, GLfloat u1, GLfloat u2, GLint stride, GLint order, const GLfloat *points)
{
   (void) target; (void) u1; (void) u2; (void) stride; (void) order; (void) points;
   noop_warn("glMap1f");
}

static void APIENTRY noopMap2d(GLenum target, GLdouble u1, GLdouble u2, GLint ustride, GLint uorder, GLdouble v1, GLdouble v2, GLint vstride, GLint vorder, const GLdouble *points)
{
   (void) target; (void) u1; (void) u2; (void) ustride; (void) uorder; (void) v1; (void) v2; (void) vstride; (void) vorder; (void) points;
   noop_warn("glMap2d");
}

static void APIENTRY noopMap2f(GLenum target, GLfloat u1, GLfloat u2, GLint ustride, GLint uorder, GLfloat v1, GLfloat v2, GLint vstride, GLint vorder, const GLfloat *points)
{
   (void) target; (void) u1; (void) u2; (void) ustride; (void) uorder; (void) v1; (void) v2; (void) vstride; (void) vorder; (void) points;
   noop_warn("glMap2f");
}

static void APIENTRY noopMapGrid1d(GLint un, GLdouble u1, GLdouble u2)
{
   (void) un; (void) u1; (void) u2;
   noop_warn("glMapGrid1d");
}

static void APIENTRY noopMapGrid1f(GLint un, GLfloat u1, GLfloat u2)
{
   (void) un; (void) u1; (void) u2;
   noop_warn("glMapGrid1f");
}

static void APIENTRY noopMapGrid2d(GLint un, GLdouble u1, GLdouble u2, GLint vn, GLdouble v1, GLdouble v2)
{
   (void) un; (void) u1; (void) u2; (void) vn; (void) v1; (void) v2;
   noop_warn("glMapGrid2d");
}

static void APIENTRY noopMapGrid2f(GLint un, GLfloat u1, GLfloat u2, GLint vn, GLfloat v1, GLfloat v2)
{
   (void) un; (void) u1; (void) u2; (void) vn; (void) v1; (void) v2;
   noop_warn("glMapGrid2f");
}

static void APIENTRY noopEvalCoord1d(GLdouble u)
{
   (void) u;
   noop_warn("glEvalCoord1d");
}

static void APIENTRY noopEvalCoord1dv(const GLdouble *u)
{
   (void) u;
   noop_warn("glEvalCoord1dv");
}

static void APIENTRY noopEvalCoord1f(GLfloat u)
{
   (void) u;
   noop_warn("glEvalCoord1f");
}

static void APIENTRY noopEvalCoord1fv(const GLfloat *u)
{
   (void) u;
   noop_warn("glEvalCoord1fv");
}

static void APIENTRY noopEvalCoord2d(GLdouble u, GLdouble v)
{
   (void) u; (void) v;
   noop_warn("glEvalCoord2d");
}

static void APIENTRY noopEvalCoord2dv(const GLdouble *u)
{
   (void) u;
   noop_warn("glEvalCoord2dv");
}

static void APIENTRY noopEvalCoord2f(GLfloat u, GLfloat v)
{
   (void) u; (void) v;
   noop_warn("glEvalCoord2f");
}

static void APIENTRY noopEvalCoord2fv(const GLfloat *u)
{
   (void) u;
   noop_warn("glEvalCoord2fv");
}

static void APIENTRY noopEvalMesh1(GLenum mode, GLint i1, GLint i2)
{
   (void) mode; (void) i1; (void) i2;
   noop_warn("glEvalMesh1");
}

static void APIENTRY noopEvalPoint1(GLint i)
{
   (void) i;
   noop_warn("glEvalPoint1");
}

static void APIENTRY noopEvalMesh2(GLenum mode, GLint i1, GLint i2, GLint j1, GLint j2)
{
   (void) mode; (void) i1; (void) i2; (void) j1; (void) j2;
   noop_warn("glEvalMesh2");
}

static void APIENTRY noopEvalPoint2(GLint i, GLint j)
{
   (void) i; (void) j;
   noop_warn("glEvalPoint2");
}

static void APIENTRY noopAlphaFunc(GLenum func, GLclampf ref)
{
   (void) func; (void) ref;
   noop_warn("glAlphaFunc");
}

static void APIENTRY noopBlendFunc(GLenum sfactor, GLenum dfactor)
{
   (void) sfactor; (void) dfactor;
   noop_warn("glBlendFunc");
}

static void APIENTRY noopLogicOp(GLenum opcode)
{
   (void) opcode;
   noop_warn("glLogicOp");
}

static void APIENTRY noopStencilFunc(GLenum func, GLint ref, GLuint mask)
{
   (void) func; (void) ref; (void) mask;
   noop_warn("glStencilFunc");
}

static void APIENTRY noopStencilOp(GLenum fail, GLenum zfail, GLenum zpass)
{
   (void) fail; (void) zfail; (void) zpass;
   noop_warn("glStencilOp");
}

static void APIENTRY noopDepthFunc(GLenum func)
{
   (void) func;
   noop_warn("glDepthFunc");
}

static void APIENTRY noopPixelZoom(GLfloat xfactor, GLfloat yfactor)
{
   (void) xfactor; (void) yfactor;
   noop_warn("glPixelZoom");
}

static void APIENTRY noopPixelTransferf(GLenum pname, GLfloat param)
{
   (void) pname; (void) param;
   noop_warn("glPixelTransferf");
}

static void APIENTRY noopPixelTransferi(GLenum pname, GLint param)
{
   (void) pname; (void) param;
   noop_warn("glPixelTransferi");
}

static void APIENTRY noopPixelStoref(GLenum pname, GLfloat param)
{
   (void) pname; (void) param;
   noop_warn("glPixelStoref");
}

static void APIENTRY noopPixelStorei(GLenum pname, GLint param)
{
   (void) pname; (void) param;
   noop_warn("glPixelStorei");
}

static void APIENTRY noopPixelMapfv(GLenum map, GLsizei mapsize, const GLfloat *values)
{
   (void) map; (void) mapsize; (void) values;
   noop_warn("glPixelMapfv");
}

static void APIENTRY noopPixelMapuiv(GLenum map, GLsizei mapsize, const GLuint *values)
{
   (void) map; (void) mapsize; (void) values;
   noop_warn("glPixelMapuiv");
}

static void APIENTRY noopPixelMapusv(GLenum map, GLsizei mapsize, const GLushort *values)
{
   (void) map; (void) mapsize; (void) values;
   noop_warn("glPixelMapusv");
}

static void APIENTRY noopReadBuffer(GLenum mode)
{
   (void) mode;
   noop_warn("glReadBuffer");
}

static void APIENTRY noopCopyPixels(GLint x, GLint y, GLsizei width, GLsizei height, GLenum type)
{
   (void) x; (void) y; (void) width; (void) height; (void) type;
   noop_warn("glCopyPixels");
}

static void APIENTRY noopReadPixels(GLint x, GLint y, GLsizei width, GLsizei height, GLenum format, GLenum type, GLvoid *pixels)
{
   (void) x; (void) y; (void) width; (void) height; (void) format; (void) type; (void) pixels;
   noop_warn("glReadPixels");
}

static void APIENTRY noopDrawPixels(GLsizei width, GLsizei height, GLenum format, GLenum type, const GLvoid *pixels)
{
   (void) width; (void) height; (void) format; (void) type; (void) pixels;
   noop_warn("glDrawPixels");
}

static void APIENTRY noopGetBooleanv(GLenum pname, GLboolean *params)
{
   (void) pname; (void) params;
   noop_warn("glGetBooleanv");
}

static void APIENTRY noopGetClipPlane(GLenum plane, GLdouble *equation)
{
   (void) plane; (void) equation;
   noop_warn("glGetClipPlane");
}

static void APIENTRY noopGetDoublev(GLenum pname, GLdouble *params)
{
   (void) pname; (void) params;
   noop_warn("glGetDoublev");
}

static GLenum APIENTRY noopGetError(void)
{
      noop_warn("glGetError");
   return (GLenum) 0;
}

static void APIENTRY noopGetFloatv(GLenum pname, GLfloat *params)
{
   (void) pname; (void) params;
   noop_warn("glGetFloatv");
}

static void APIENTRY noopGetIntegerv(GLenum pname, GLint *params)
{
   (void) pname; (void) params;
   noop_warn("glGetIntegerv");
}

static void APIENTRY noopGetLightfv(GLenum light, GLenum pname, GLfloat *params)
{
   (void) light; (void) pname; (void) params;
   noop_warn("glGetLightfv");
}

static void APIENTRY noopGetLightiv(GLenum light, GLenum pname, GLint *params)
{
   (void) light; (void) pname; (void) params;
   noop_warn("glGetLightiv");
}

static void APIENTRY noopGetMapdv(GLenum target, GLenum query, GLdouble *v)
{
   (void) target; (void) query; (void) v;
   noop_warn("glGetMapdv");
}

static void APIENTRY noopGetMapfv(GLenum target, GLenum query, GLfloat *v)
{
   (void) target; (void) query; (void) v;
   noop_warn("glGetMapfv");
}

static void APIENTRY noopGetMapiv(GLenum target, GLenum query, GLint *v)
{
   (void) target; (void) query; (void) v;
   noop_warn("glGetMapiv");
}

static void APIENTRY noopGetMaterialfv(GLenum face, GLenum pname, GLfloat *params)
{
   (void) face; (void) pname; (void) params;
   noop_warn("glGetMaterialfv");
}

static void APIENTRY noopGetMaterialiv(GLenum face, GLenum pname, GLint *params)
{
   (void) face; (void) pname; (void) params;
   noop_warn("glGetMaterialiv");
}

static void APIENTRY noopGetPixelMapfv(GLenum map, GLfloat *values)
{
   (void) map; (void) values;
   noop_warn("glGetPixelMapfv");
}

static void APIENTRY noopGetPixelMapuiv(GLenum map, GLuint *values)
{
   (void) map; (void) values;
   noop_warn("glGetPixelMapuiv");
}

static void APIENTRY noopGetPixelMapusv(GLenum map, GLushort *values)
{
   (void) map; (void) values;
   noop_warn("glGetPixelMapusv");
}

static void APIENTRY noopGetPolygonStipple(GLubyte *mask)
{
   (void) mask;
   noop_warn("glGetPolygonStipple");
}

static const GLubyte * APIENTRY noopGetString(GLenum name)
{
   (void) name;
   noop_warn("glGetString");
   return (const GLubyte *) 0;
}

static void APIENTRY noopGetTexEnvfv(GLenum target, GLenum pname, GLfloat *params)
{
   (void) target; (void) pname; (void) params;
   noop_warn("glGetTexEnvfv");
}

static void APIENTRY noopGetTexEnviv(GLenum target, GLenum pname, GLint *params)
{
   (void) target; (void) pname; (void) params;
   noop_warn("glGetTexEnviv");
}

static void APIENTRY noopGetTexGendv(GLenum coord, GLenum pname, GLdouble *params)
{
   (void) coord; (void) pname; (void) params;
   noop_warn("glGetTexGendv");
}

static void APIENTRY noopGetTexGenfv(GLenum coord, GLenum pname, GLfloat *params)
{
   (void) coord; (void) pname; (void) params;
   noop_warn("glGetTexGenfv");
}

static void APIENTRY noopGetTexGeniv(GLenum coord, GLenum pname, GLint *params)
{
   (void) coord; (void) pname; (void) params;
   noop_warn("glGetTexGeniv");
}

static void APIENTRY noopGetTexImage(GLenum target, GLint level, GLenum format, GLenum type, GLvoid *pixels)
{
   (void) target; (void) level; (void) format; (void) type; (void) pixels;
   noop_warn("glGetTexImage");
}

static void APIENTRY noopGetTexParameterfv(GLenum target, GLenum pname, GLfloat *params)
{
   (void) target; (void) pname; (void) params;
   noop_warn("glGetTexParameterfv");
}

static void APIENTRY noopGetTexParameteriv(GLenum target, GLenum pname, GLint *params)
{
   (void) target; (void) pname; (void) params;
   noop_warn("glGetTexParameteriv");
}

static void APIENTRY noopGetTexLevelParameterfv(GLenum target, GLint level, GLenum pname, GLfloat *params)
{
   (void) target; (void) level; (void) pname; (void) params;
   noop_warn("glGetTexLevelParameterfv");
}

static void APIENTRY noopGetTexLevelParameteriv(GLenum target, GLint level, GLenum pname, GLint *params)
{
   (void) target; (void) level; (void) pname; (void) params;
   noop_warn("glGetTexLevelParameteriv");
}

static GLboolean APIENTRY noopIsEnabled(GLenum cap)
{
   (void) cap;
   noop_warn("glIsEnabled");
   return (GLboolean) 0;
}

static GLboolean APIENTRY noopIsList(GLuint list)
{
   (void) list;
   noop_warn("glIsList");
   return (GLboolean) 0;
}

static void APIENTRY noopDepthRange(GLclampd zNear, GLclampd zFar)
{
   (void) zNear; (void) zFar;
   noop_warn("glDepthRange");
}

static void APIENTRY noopFrustum(GLdouble left, GLdouble right, GLdouble bottom, GLdouble top, GLdouble zNear, GLdouble zFar)
{
   (void) left; (void) right; (void) bottom; (void) top; (void) zNear; (void) zFar;
   noop_warn("glFrustum");
}

static void APIENTRY noopLoadIdentity(void)
{
      noop_warn("glLoadIdentity");
}

static void APIENTRY noopLoadMatrixf(const GLfloat *m)
{
   (void) m;
   noop_warn("glLoadMatrixf");
}

static void APIENTRY noopLoadMatrixd(const GLdouble *m)
{
   (void) m;
   noop_warn("glLoadMatrixd");
}

static void APIENTRY noopMatrixMode(GLenum mode)
{
   (void) mode;
   noop_warn("glMatrixMode");
}

static void APIENTRY noopMultMatrixf(const GLfloat *m)
{
   (void) m;
   noop_warn("glMultMatrixf");
}

static void APIENTRY noopMultMatrixd(const GLdouble *m)
{
   (void) m;
   noop_warn("glMultMatrixd");
}

static void APIENTRY noopOrtho(GLdouble left, GLdouble right, GLdouble bottom, GLdouble top, GLdouble zNear, GLdouble zFar)
{
   (void) left; (void) right; (void) bottom; (void) top; (void) zNear; (void) zFar;
   noop_warn("glOrtho");
}

static void APIENTRY noopPopMatrix(void)
{
      noop_warn("glPopMatrix");
}

static void APIENTRY noopPushMatrix(void)
{
      noop_warn("glPushMatrix");
}

static void APIENTRY noopRotated(GLdouble angle, GLdouble x, GLdouble y, GLdouble z)
{
   (void) angle; (void) x; (void) y; (void) z;
   noop_warn("glRotated");
}

static void APIENTRY noopRotatef(GLfloat angle, GLfloat x, GLfloat y, GLfloat z)
{
   (void) angle; (void) x; (void) y; (void) z;
   noop_warn("glRotatef");
}

static void APIENTRY noopScaled(GLdouble x, GLdouble y, GLdouble z)
{
   (void) x; (void) y; (void) z;
   noop_warn("glScaled");
}

static void APIENTRY noopScalef(GLfloat x, GLfloat y, GLfloat z)
{
   (void) x; (void) y; (void) z;
   noop_warn("glScalef");
}

static void APIENTRY noopTranslated(GLdouble x, GLdouble y, GLdouble z)
{
   (void) x; (void) y; (void) z;
   noop_warn("glTranslated");
}

static void APIENTRY noopTranslatef(GLfloat x, GLfloat y, GLfloat z)
{
   (void) x; (void) y; (void) z;
   noop_warn("glTranslatef");
}

static void APIENTRY noopViewport(GLint x, GLint y, GLsizei width, GLsizei height)
{
   (void) x; (void) y; (void) width; (void) height;
   noop_warn("glViewport");
}

static void APIENTRY noopArrayElement(GLint i)
{
   (void) i;
   noop_warn("glArrayElement");
}

static void APIENTRY noopBindTexture(GLenum target, GLuint texture)
{
   (void) target; (void) texture;
   noop_warn("glBindTexture");
}

static void APIENTRY noopColorPointer(GLint size, GLenum type, GLsizei stride, const GLvoid *pointer)
{
   (void) size; (void) type; (void) stride; (void) pointer;
   noop_warn("glColorPointer");
}

static void APIENTRY noopDisableClientState(GLenum array)
{
   (void) array;
   noop_warn("glDisableClientState");
}

static void APIENTRY noopDrawArrays(GLenum mode, GLint first, GLsizei count)
{
   (void) mode; (void) first; (void) count;
   noop_warn("glDrawArrays");
}

static void APIENTRY noopDrawElements(GLenum mode, GLsizei count, GLenum type, const GLvoid *indices)
{
   (void) mode; (void) count; (void) type; (void) indices;
   noop_warn("glDrawElements");
}

static void APIENTRY noopEdgeFlagPointer(GLsizei stride, const GLvoid *pointer)
{
   (void) stride; (void) pointer;
   noop_warn("glEdgeFlagPointer");
}

static void APIENTRY noopEnableClientState(GLenum array)
{
   (void) array;
   noop_warn("glEnableClientState");
}

static void APIENTRY noopIndexPointer(GLenum type, GLsizei stride, const GLvoid *pointer)
{
   (void) type; (void) stride; (void) pointer;
   noop_warn("glIndexPointer");
}

static void APIENTRY noopIndexub(GLubyte c)
{
   (void) c;
   noop_warn("glIndexub");
}

static void APIENTRY noopIndexubv(const GLubyte *c)
{
   (void) c;
   noop_warn("glIndexubv");
}

static void APIENTRY noopInterleavedArrays(GLenum format, GLsizei stride, const GLvoid *pointer)
{
   (void) format; (void) stride; (void) pointer;
   noop_warn("glInterleavedArrays");
}

static void APIENTRY noopNormalPointer(GLenum type, GLsizei stride, const GLvoid *pointer)
{
   (void) type; (void) stride; (void) pointer;
   noop_warn("glNormalPointer");
}

static void APIENTRY noopPolygonOffset(GLfloat factor, GLfloat units)
{
   (void) factor; (void) units;
   noop_warn("glPolygonOffset");
}

static void APIENTRY noopTexCoordPointer(GLint size, GLenum type, GLsizei stride, const GLvoid *pointer)
{
   (void) size; (void) type; (void) stride; (void) pointer;
   noop_warn("glTexCoordPointer");
}

static void APIENTRY noopVertexPointer(GLint size, GLenum type, GLsizei stride, const GLvoid *pointer)
{
   (void) size; (void) type; (void) stride; (void) pointer;
   noop_warn("glVertexPointer");
}

static GLboolean APIENTRY noopAreTexturesResident(GLsizei n, const GLuint *textures, GLboolean *residences)
{
   (void) n; (void) textures; (void) residences;
   noop_warn("glAreTexturesResident");
   return (GLboolean) 0;
}

static void APIENTRY noopCopyTexImage1D(GLenum target, GLint level, GLenum internalformat, GLint x, GLint y, GLsizei width, GLint border)
{
   (void) target; (void) level; (void) internalformat; (void) x; (void) y; (void) width; (void) border;
   noop_warn("glCopyTexImage1D");
}

static void APIENTRY noopCopyTexImage2D(GLenum target, GLint level, GLenum internalformat, GLint x, GLint y, GLsizei width, GLsizei height, GLint border)
{
   (void) target; (void) level; (void) internalformat; (void) x; (void) y; (void) width; (void) height; (void) border;
   noop_warn("glCopyTexImage2D");
}

static void APIENTRY noopCopyTexSubImage1D(GLenum target, GLint level, GLint xoffset, GLint x, GLint y, GLsizei width)
{
   (void) target; (void) level; (void) xoffset; (void) x; (void) y; (void) width;
   noop_warn("glCopyTexSubImage1D");
}

static void APIENTRY noopCopyTexSubImage2D(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint x, GLint y, GLsizei width, GLsizei height)
{
   (void) target; (void) level; (void) xoffset; (void) yoffset; (void) x; (void) y; (void) width; (void) height;
   noop_warn("glCopyTexSubImage2D");
}

static void APIENTRY noopDeleteTextures(GLsizei n, const GLuint *textures)
{
   (void) n; (void) textures;
   noop_warn("glDeleteTextures");
}

static void APIENTRY noopGenTextures(GLsizei n, GLuint *textures)
{
   (void) n; (void) textures;
   noop_warn("glGenTextures");
}

static void APIENTRY noopGetPointerv(GLenum pname, GLvoid **params)
{
   (void) pname; (void) params;
   noop_warn("glGetPointerv");
}

static GLboolean APIENTRY noopIsTexture(GLuint texture)
{
   (void) texture;
   noop_warn("glIsTexture");
   return (GLboolean) 0;
}

static void APIENTRY noopPrioritizeTextures(GLsizei n, const GLuint *textures, const GLclampf *priorities)
{
   (void) n; (void) textures; (void) priorities;
   noop_warn("glPrioritizeTextures");
}

static void APIENTRY noopTexSubImage1D(GLenum target, GLint level, GLint xoffset, GLsizei width, GLenum format, GLenum type, const GLvoid *pixels)
{
   (void) target; (void) level; (void) xoffset; (void) width; (void) format; (void) type; (void) pixels;
   noop_warn("glTexSubImage1D");
}

static void APIENTRY noopTexSubImage2D(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLenum type, const GLvoid *pixels)
{
   (void) target; (void) level; (void) xoffset; (void) yoffset; (void) width; (void) height; (void) format; (void) type; (void) pixels;
   noop_warn("glTexSubImage2D");
}

static void APIENTRY noopPopClientAttrib(void)
{
      noop_warn("glPopClientAttrib");
}

static void APIENTRY noopPushClientAttrib(GLbitfield mask)
{
   (void) mask;
   noop_warn("glPushClientAttrib");
}

static void APIENTRY noopBlendColor(GLclampf red, GLclampf green, GLclampf blue, GLclampf alpha)
{
   (void) red; (void) green; (void) blue; (void) alpha;
   noop_warn("glBlendColor");
}

static void APIENTRY noopBlendEquation(GLenum mode)
{
   (void) mode;
   noop_warn("glBlendEquation");
}

static void APIENTRY noopDrawRangeElements(GLenum mode, GLuint start, GLuint end, GLsizei count, GLenum type, const GLvoid *indices)
{
   (void) mode; (void) start; (void) end; (void) count; (void) type; (void) indices;
   noop_warn("glDrawRangeElements");
}

static void APIENTRY noopColorTable(GLenum target, GLenum internalformat, GLsizei width, GLenum format, GLenum type, const GLvoid *table)
{
   (void) target; (void) internalformat; (void) width; (void) format; (void) type; (void) table;
   noop_warn("glColorTable");
}

static void APIENTRY noopColorTableParameterfv(GLenum target, GLenum pname, const GLfloat *params)
{
   (void) target; (void) pname; (void) params;
   noop_warn("glColorTableParameterfv");
}

static void APIENTRY noopColorTableParameteriv(GLenum target, GLenum pname, const GLint *params)
{
   (void) target; (void) pname; (void) params;
   noop_warn("glColorTableParameteriv");
}

static void APIENTRY noopCopyColorTable(GLenum target, GLenum internalformat, GLint x, GLint y, GLsizei width)
{
   (void) target; (void) internalformat; (void) x; (void) y; (void) width;
   noop_warn("glCopyColorTable");
}

static void APIENTRY noopGetColorTable(GLenum target, GLenum format, GLenum type, GLvoid *table)
{
   (void) target; (void) format; (void) type; (void) table;
   noop_warn("glGetColorTable");
}

static void APIENTRY noopGetColorTableParameterfv(GLenum target, GLenum pname, GLfloat *params)
{
   (void) target; (void) pname; (void) params;
   noop_warn("glGetColorTableParameterfv");
}

static void APIENTRY noopGetColorTableParameteriv(GLenum target, GLenum pname, GLint *params)
{
   (void) target; (void) pname; (void) params;
   noop_warn("glGetColorTableParameteriv");
}

static void APIENTRY noopColorSubTable(GLenum target, GLsizei start, GLsizei count, GLenum format, GLenum type, const GLvoid *data)
{
   (void) target; (void) start; (void) count; (void) format; (void) type; (void) data;
   noop_warn("glColorSubTable");
}

static void APIENTRY noopCopyColorSubTable(GLenum target, GLsizei start, GLint x, GLint y, GLsizei width)
{
   (void) target; (void) start; (void) x; (void) y; (void) width;
   noop_warn("glCopyColorSubTable");
}

static void APIENTRY noopConvolutionFilter1D(GLenum target, GLenum internalformat, GLsizei width, GLenum format, GLenum type, const GLvoid *image)
{
   (void) target; (void) internalformat; (void) width; (void) format; (void) type; (void) image;
   noop_warn("glConvolutionFilter1D");
}

static void APIENTRY noopConvolutionFilter2D(GLenum target, GLenum internalformat, GLsizei width, GLsizei height, GLenum format, GLenum type, const GLvoid *image)
{
   (void) target; (void) internalformat; (void) width; (void) height; (void) format; (void) type; (void) image;
   noop_warn("glConvolutionFilter2D");
}

static void APIENTRY noopConvolutionParameterf(GLenum target, GLenum pname, GLfloat params)
{
   (void) target; (void) pname; (void) params;
   noop_warn("glConvolutionParameterf");
}

static void APIENTRY noopConvolutionParameterfv(GLenum target, GLenum pname, const GLfloat *params)
{
   (void) target; (void) pname; (void) params;
   noop_warn("glConvolutionParameterfv");
}

static void APIENTRY noopConvolutionParameteri(GLenum target, GLenum pname, GLint params)
{
   (void) target; (void) pname; (void) params;
   noop_warn("glConvolutionParameteri");
}

static void APIENTRY noopConvolutionParameteriv(GLenum target, GLenum pname, const GLint *params)
{
   (void) target; (void) pname; (void) params;
   noop_warn("glConvolutionParameteriv");
}

static void APIENTRY noopCopyConvolutionFilter1D(GLenum target, GLenum internalformat, GLint x, GLint y, GLsizei width)
{
   (void) target; (void) internalformat; (void) x; (void) y; (void) width;
   noop_warn("glCopyConvolutionFilter1D");
}

static void APIENTRY noopCopyConvolutionFilter2D(GLenum target, GLenum internalformat, GLint x, GLint y, GLsizei width, GLsizei height)
{
   (void) target; (void) internalformat; (void) x; (void) y; (void) width; (void) height;
   noop_warn("glCopyConvolutionFilter2D");
}

static void APIENTRY noopGetConvolutionFilter(GLenum target, GLenum format, GLenum type, GLvoid *image)
{
   (void) target; (void) format; (void) type; (void) image;
   noop_warn("glGetConvolutionFilter");
}

static void APIENTRY noopGetConvolutionParameterfv(GLenum target, GLenum pname, GLfloat *params)
{
   (void) target; (void) pname; (void) params;
   noop_warn("glGetConvolutionParameterfv");
}

static void APIENTRY noopGetConvolutionParameteriv(GLenum target, GLenum pname, GLint *params)
{
   (void) target; (void) pname; (void) params;
   noop_warn("glGetConvolutionParameteriv");
}

static void APIENTRY noopGetSeparableFilter(GLenum target, GLenum format, GLenum type, GLvoid *row, GLvoid *column, GLvoid *span)
{
   (void) target; (void) format; (void) type; (void) row; (void) column; (void) span;
   noop_warn("glGetSeparableFilter");
}

static void APIENTRY noopSeparableFilter2D(GLenum target, GLenum internalformat, GLsizei width, GLsizei height, GLenum format, GLenum type, const GLvoid *row, const GLvoid *column)
{
   (void) target; (void) internalformat; (void) width; (void) height; (void) format; (void) type; (void) row; (void) column;
   noop_warn("glSeparableFilter2D");
}

static void APIENTRY noopGetHistogram(GLenum target, GLboolean reset, GLenum format, GLenum type, GLvoid *values)
{
   (void) target; (void) reset; (void) format; (void) type; (void) values;
   noop_warn("glGetHistogram");
}

static void APIENTRY noopGetHistogramParameterfv(GLenum target, GLenum pname, GLfloat *params)
{
   (void) target; (void) pname; (void) params;
   noop_warn("glGetHistogramParameterfv");
}

static void APIENTRY noopGetHistogramParameteriv(GLenum target, GLenum pname, GLint *params)
{
   (void) target; (void) pname; (void) params;
   noop_warn("glGetHistogramParameteriv");
}

static void APIENTRY noopGetMinmax(GLenum target, GLboolean reset, GLenum format, GLenum type, GLvoid *values)
{
   (void) target; (void) reset; (void) format; (void) type; (void) values;
   noop_warn("glGetMinmax");
}

static void APIENTRY noopGetMinmaxParameterfv(GLenum target, GLenum pname, GLfloat *params)
{
   (void) target; (void) pname; (void) params;
   noop_warn("glGetMinmaxParameterfv");
}

static void APIENTRY noopGetMinmaxParameteriv(GLenum target, GLenum pname, GLint *params)
{
   (void) target; (void) pname; (void) params;
   noop_warn("glGetMinmaxParameteriv");
}

static void APIENTRY noopHistogram(GLenum target, GLsizei width, GLenum internalformat, GLboolean sink)
{
   (void) target; (void) width; (void) internalformat; (void) sink;
   noop_warn("glHistogram");
}

static void APIENTRY noopMinmax(GLenum target, GLenum internalformat, GLboolean sink)
{
   (void) target; (void) internalformat; (void) sink;
   noop_warn("glMinmax");
}

static void APIENTRY noopResetHistogram(GLenum target)
{
   (void) target;
   noop_warn("glResetHistogram");
}

static void APIENTRY noopResetMinmax(GLenum target)
{
   (void) target;
   noop_warn("glResetMinmax");
}

static void APIENTRY noopTexImage3D(GLenum target, GLint level, GLint internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLenum format, GLenum type, const GLvoid *pixels)
{
   (void) target; (void) level; (void) internalformat; (void) width; (void) height; (void) depth; (void) border; (void) format; (void) type; (void) pixels;
   noop_warn("glTexImage3D");
}

static void APIENTRY noopTexSubImage3D(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, const GLvoid *pixels)
{
   (void) target; (void) level; (void) xoffset; (void) yoffset; (void) zoffset; (void) width; (void) height; (void) depth; (void) format; (void) type; (void) pixels;
   noop_warn("glTexSubImage3D");
}

static void APIENTRY noopCopyTexSubImage3D(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLint x, GLint y, GLsizei width, GLsizei height)
{
   (void) target; (void) level; (void) xoffset; (void) yoffset; (void) zoffset; (void) x; (void) y; (void) width; (void) height;
   noop_warn("glCopyTexSubImage3D");
}

static void APIENTRY noopActiveTextureARB(GLenum texture)
{
   (void) texture;
   noop_warn("glActiveTextureARB");
}

static void APIENTRY noopClientActiveTextureARB(GLenum texture)
{
   (void) texture;
   noop_warn("glClientActiveTextureARB");
}

static void APIENTRY noopMultiTexCoord1dARB(GLenum target, GLdouble s)
{
   (void) target; (void) s;
   noop_warn("glMultiTexCoord1dARB");
}

static void APIENTRY noopMultiTexCoord1dvARB(GLenum target, const GLdouble *v)
{
   (void) target; (void) v;
   noop_warn("glMultiTexCoord1dvARB");
}

static void APIENTRY noopMultiTexCoord1fARB(GLenum target, GLfloat s)
{
   (void) target; (void) s;
   noop_warn("glMultiTexCoord1fARB");
}

static void APIENTRY noopMultiTexCoord1fvARB(GLenum target, const GLfloat *v)
{
   (void) target; (void) v;
   noop_warn("glMultiTexCoord1fvARB");
}

static void APIENTRY noopMultiTexCoord1iARB(GLenum target, GLint s)
{
   (void) target; (void) s;
   noop_warn("glMultiTexCoord1iARB");
}

static void APIENTRY noopMultiTexCoord1ivARB(GLenum target, const GLint *v)
{
   (void) target; (void) v;
   noop_warn("glMultiTexCoord1ivARB");
}

static void APIENTRY noopMultiTexCoord1sARB(GLenum target, GLshort s)
{
   (void) target; (void) s;
   noop_warn("glMultiTexCoord1sARB");
}

static void APIENTRY noopMultiTexCoord1svARB(GLenum target, const GLshort *v)
{
   (void) target; (void) v;
   noop_warn("glMultiTexCoord1svARB");
}

static void APIENTRY noopMultiTexCoord2dARB(GLenum target, GLdouble s, GLdouble t)
{
   (void) target; (void) s; (void) t;
   noop_warn("glMultiTexCoord2dARB");
}

static void APIENTRY noopMultiTexCoord2dvARB(GLenum target, const GLdouble *v)
{
   (void) target; (void) v;
   noop_warn("glMultiTexCoord2dvARB");
}

static void APIENTRY noopMultiTexCoord2fARB(GLenum target, GLfloat s, GLfloat t)
{
   (void) target; (void) s; (void) t;
   noop_warn("glMultiTexCoord2fARB");
}

static void APIENTRY noopMultiTexCoord2fvARB(GLenum target, const GLfloat *v)
{
   (void) target; (void) v;
   noop_warn("glMultiTexCoord2fvARB");
}

static void APIENTRY noopMultiTexCoord2iARB(GLenum target, GLint s, GLint t)
{
   (void) target; (void) s; (void) t;
   noop_warn("glMultiTexCoord2iARB");
}

static void APIENTRY noopMultiTexCoord2ivARB(GLenum target, const GLint *v)
{
   (void) target; (void) v;
   noop_warn("glMultiTexCoord2ivARB");
}

static void APIENTRY noopMultiTexCoord2sARB(GLenum target, GLshort s, GLshort t)
{
   (void) target; (void) s; (void) t;
   noop_warn("glMultiTexCoord2sARB");
}

static void APIENTRY noopMultiTexCoord2svARB(GLenum target, const GLshort *v)
{
   (void) target; (void) v;
   noop_warn("glMultiTexCoord2svARB");
}

static void APIENTRY noopMultiTexCoord3dARB(GLenum target, GLdouble s, GLdouble t, GLdouble r)
{
   (void) target; (void) s; (void) t; (void) r;
   noop_warn("glMultiTexCoord3dARB");
}

static void APIENTRY noopMultiTexCoord3dvARB(GLenum target, const GLdouble *v)
{
   (void) target; (void) v;
   noop_warn("glMultiTexCoord3dvARB");
}

static void APIENTRY noopMultiTexCoord3fARB(GLenum target, GLfloat s, GLfloat t, GLfloat r)
{
   (void) target; (void) s; (void) t; (void) r;
   noop_warn("glMultiTexCoord3fARB");
}

static void APIENTRY noopMultiTexCoord3fvARB(GLenum target, const GLfloat *v)
{
   (void) target; (void) v;
   noop_warn("glMultiTexCoord3fvARB");
}

static void APIENTRY noopMultiTexCoord3iARB(GLenum target, GLint s, GLint t, GLint r)
{
   (void) target; (void) s; (void) t; (void) r;
   noop_warn("glMultiTexCoord3iARB");
}

static void APIENTRY noopMultiTexCoord3ivARB(GLenum target, const GLint *v)
{
   (void) target; (void) v;
   noop_warn("glMultiTexCoord3ivARB");
}

static void APIENTRY noopMultiTexCoord3sARB(GLenum target, GLshort s, GLshort t, GLshort r)
{
   (void) target; (void) s; (void) t; (void) r;
   noop_warn("glMultiTexCoord3sARB");
}

static void APIENTRY noopMultiTexCoord3svARB(GLenum target, const GLshort *v)
{
   (void) target; (void) v;
   noop_warn("glMultiTexCoord3svARB");
}

static void APIENTRY noopMultiTexCoord4dARB(GLenum target, GLdouble s, GLdouble t, GLdouble r, GLdouble q)
{
   (void) target; (void) s; (void) t; (void) r; (void) q;
   noop_warn("glMultiTexCoord4dARB");
}

static void APIENTRY noopMultiTexCoord4dvARB(GLenum target, const GLdouble *v)
{
   (void) target; (void) v;
   noop_warn("glMultiTexCoord4dvARB");
}

static void APIENTRY noopMultiTexCoord4fARB(GLenum target, GLfloat s, GLfloat t, GLfloat r, GLfloat q)
{
   (void) target; (void) s; (void) t; (void) r; (void) q;
   noop_warn("glMultiTexCoord4fARB");
}

static void APIENTRY noopMultiTexCoord4fvARB(GLenum target, const GLfloat *v)
{
   (void) target; (void) v;
   noop_warn("glMultiTexCoord4fvARB");
}

static void APIENTRY noopMultiTexCoord4iARB(GLenum target, GLint s, GLint t, GLint r, GLint q)
{
   (void) target; (void) s; (void) t; (void) r; (void) q;
   noop_warn("glMultiTexCoord4iARB");
}

static void APIENTRY noopMultiTexCoord4ivARB(GLenum target, const GLint *v)
{
   (void) target; (void) v;
   noop_warn("glMultiTexCoord4ivARB");
}

static void APIENTRY noopMultiTexCoord4sARB(GLenum target, GLshort s, GLshort t, GLshort r, GLshort q)
{
   (void) target; (void) s; (void) t; (void) r; (void) q;
   noop_warn("glMultiTexCoord4sARB");
}

static void APIENTRY noopMultiTexCoord4svARB(GLenum target, const GLshort *v)
{
   (void) target; (void) v;
   noop_warn("glMultiTexCoord4svARB");
}

static void APIENTRY noopAttachShader(GLuint program, GLuint shader)
{
   (void) program; (void) shader;
   noop_warn("glAttachShader");
}

static GLuint APIENTRY noopCreateProgram(void)
{
      noop_warn("glCreateProgram");
   return (GLuint) 0;
}

static GLuint APIENTRY noopCreateShader(GLenum type)
{
   (void) type;
   noop_warn("glCreateShader");
   return (GLuint) 0;
}

static void APIENTRY noopDeleteProgram(GLuint program)
{
   (void) program;
   noop_warn("glDeleteProgram");
}

static void APIENTRY noopDeleteShader(GLuint program)
{
   (void) program;
   noop_warn("glDeleteShader");
}

static void APIENTRY noopDetachShader(GLuint program, GLuint shader)
{
   (void) program; (void) shader;
   noop_warn("glDetachShader");
}

static void APIENTRY noopGetAttachedShaders(GLuint program, GLsizei maxCount, GLsizei *count, GLuint *obj)
{
   (void) program; (void) maxCount; (void) count; (void) obj;
   noop_warn("glGetAttachedShaders");
}

static void APIENTRY noopGetProgramInfoLog(GLuint program, GLsizei bufSize, GLsizei *length, GLchar *infoLog)
{
   (void) program; (void) bufSize; (void) length; (void) infoLog;
   noop_warn("glGetProgramInfoLog");
}

static void APIENTRY noopGetProgramiv(GLuint program, GLenum pname, GLint *params)
{
   (void) program; (void) pname; (void) params;
   noop_warn("glGetProgramiv");
}

static void APIENTRY noopGetShaderInfoLog(GLuint shader, GLsizei bufSize, GLsizei *length, GLchar *infoLog)
{
   (void) shader; (void) bufSize; (void) length; (void) infoLog;
   noop_warn("glGetShaderInfoLog");
}

static void APIENTRY noopGetShaderiv(GLuint shader, GLenum pname, GLint *params)
{
   (void) shader; (void) pname; (void) params;
   noop_warn("glGetShaderiv");
}

static GLboolean APIENTRY noopIsProgram(GLuint program)
{
   (void) program;
   noop_warn("glIsProgram");
   return (GLboolean) 0;
}

static GLboolean APIENTRY noopIsShader(GLuint shader)
{
   (void) shader;
   noop_warn("glIsShader");
   return (GLboolean) 0;
}

static void APIENTRY noopStencilFuncSeparate(GLenum face, GLenum func, GLint ref, GLuint mask)
{
   (void) face; (void) func; (void) ref; (void) mask;
   noop_warn("glStencilFuncSeparate");
}

static void APIENTRY noopStencilMaskSeparate(GLenum face, GLuint mask)
{
   (void) face; (void) mask;
   noop_warn("glStencilMaskSeparate");
}

static void APIENTRY noopStencilOpSeparate(GLenum face, GLenum sfail, GLenum zfail, GLenum zpass)
{
   (void) face; (void) sfail; (void) zfail; (void) zpass;
   noop_warn("glStencilOpSeparate");
}

static void APIENTRY noopUniformMatrix2x3fv(GLint location, GLsizei count, GLboolean transpose, const GLfloat *value)
{
   (void) location; (void) count; (void) transpose; (void) value;
   noop_warn("glUniformMatrix2x3fv");
}

static void APIENTRY noopUniformMatrix2x4fv(GLint location, GLsizei count, GLboolean transpose, const GLfloat *value)
{
   (void) location; (void) count; (void) transpose; (void) value;
   noop_warn("glUniformMatrix2x4fv");
}

static void APIENTRY noopUniformMatrix3x2fv(GLint location, GLsizei count, GLboolean transpose, const GLfloat *value)
{
   (void) location; (void) count; (void) transpose; (void) value;
   noop_warn("glUniformMatrix3x2fv");
}

static void APIENTRY noopUniformMatrix3x4fv(GLint location, GLsizei count, GLboolean transpose, const GLfloat *value)
{
   (void) location; (void) count; (void) transpose; (void) value;
   noop_warn("glUniformMatrix3x4fv");
}

static void APIENTRY noopUniformMatrix4x2fv(GLint location, GLsizei count, GLboolean transpose, const GLfloat *value)
{
   (void) location; (void) count; (void) transpose; (void) value;
   noop_warn("glUniformMatrix4x2fv");
}

static void APIENTRY noopUniformMatrix4x3fv(GLint location, GLsizei count, GLboolean transpose, const GLfloat *value)
{
   (void) location; (void) count; (void) transpose; (void) value;
   noop_warn("glUniformMatrix4x3fv");
}

static void APIENTRY noopClampColor(GLenum target, GLenum clamp)
{
   (void) target; (void) clamp;
   noop_warn("glClampColor");
}

static void APIENTRY noopClearBufferfi(GLenum buffer, GLint drawbuffer, GLfloat depth, GLint stencil)
{
   (void) buffer; (void) drawbuffer; (void) depth; (void) stencil;
   noop_warn("glClearBufferfi");
}

static void APIENTRY noopClearBufferfv(GLenum buffer, GLint drawbuffer, const GLfloat *value)
{
   (void) buffer; (void) drawbuffer; (void) value;
   noop_warn("glClearBufferfv");
}

static void APIENTRY noopClearBufferiv(GLenum buffer, GLint drawbuffer, const GLint *value)
{
   (void) buffer; (void) drawbuffer; (void) value;
   noop_warn("glClearBufferiv");
}

static void APIENTRY noopClearBufferuiv(GLenum buffer, GLint drawbuffer, const GLuint *value)
{
   (void) buffer; (void) drawbuffer; (void) value;
   noop_warn("glClearBufferuiv");
}

static const GLubyte * APIENTRY noopGetStringi(GLenum name, GLuint index)
{
   (void) name; (void) index;
   noop_warn("glGetStringi");
   return (const GLubyte *) 0;
}

static void APIENTRY noopFramebufferTexture(GLenum target, GLenum attachment, GLuint texture, GLint level)
{
   (void) target; (void) attachment; (void) texture; (void) level;
   noop_warn("glFramebufferTexture");
}

static void APIENTRY noopGetBufferParameteri64v(GLenum target, GLenum pname, GLint64 *params)
{
   (void) target; (void) pname; (void) params;
   noop_warn("glGetBufferParameteri64v");
}

static void APIENTRY noopGetInteger64i_v(GLenum cap, GLuint index, GLint64 *data)
{
   (void) cap; (void) index; (void) data;
   noop_warn("glGetInteger64i_v");
}

static void APIENTRY noopVertexAttribDivisor(GLuint index, GLuint divisor)
{
   (void) index; (void) divisor;
   noop_warn("glVertexAttribDivisor");
}

static void APIENTRY noopLoadTransposeMatrixdARB(const GLdouble *m)
{
   (void) m;
   noop_warn("glLoadTransposeMatrixdARB");
}

static void APIENTRY noopLoadTransposeMatrixfARB(const GLfloat *m)
{
   (void) m;
   noop_warn("glLoadTransposeMatrixfARB");
}

static void APIENTRY noopMultTransposeMatrixdARB(const GLdouble *m)
{
   (void) m;
   noop_warn("glMultTransposeMatrixdARB");
}

static void APIENTRY noopMultTransposeMatrixfARB(const GLfloat *m)
{
   (void) m;
   noop_warn("glMultTransposeMatrixfARB");
}

static void APIENTRY noopSampleCoverageARB(GLclampf value, GLboolean invert)
{
   (void) value; (void) invert;
   noop_warn("glSampleCoverageARB");
}

static void APIENTRY noopCompressedTexImage1DARB(GLenum target, GLint level, GLenum internalformat, GLsizei width, GLint border, GLsizei imageSize, const GLvoid *data)
{
   (void) target; (void) level; (void) internalformat; (void) width; (void) border; (void) imageSize; (void) data;
   noop_warn("glCompressedTexImage1DARB");
}

static void APIENTRY noopCompressedTexImage2DARB(GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLint border, GLsizei imageSize, const GLvoid *data)
{
   (void) target; (void) level; (void) internalformat; (void) width; (void) height; (void) border; (void) imageSize; (void) data;
   noop_warn("glCompressedTexImage2DARB");
}

static void APIENTRY noopCompressedTexImage3DARB(GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLsizei imageSize, const GLvoid *data)
{
   (void) target; (void) level; (void) internalformat; (void) width; (void) height; (void) depth; (void) border; (void) imageSize; (void) data;
   noop_warn("glCompressedTexImage3DARB");
}

static void APIENTRY noopCompressedTexSubImage1DARB(GLenum target, GLint level, GLint xoffset, GLsizei width, GLenum format, GLsizei imageSize, const GLvoid *data)
{
   (void) target; (void) level; (void) xoffset; (void) width; (void) format; (void) imageSize; (void) data;
   noop_warn("glCompressedTexSubImage1DARB");
}

static void APIENTRY noopCompressedTexSubImage2DARB(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLsizei imageSize, const GLvoid *data)
{
   (void) target; (void) level; (void) xoffset; (void) yoffset; (void) width; (void) height; (void) format; (void) imageSize; (void) data;
   noop_warn("glCompressedTexSubImage2DARB");
}

static void APIENTRY noopCompressedTexSubImage3DARB(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLsizei imageSize, const GLvoid *data)
{
   (void) target; (void) level; (void) xoffset; (void) yoffset; (void) zoffset; (void) width; (void) height; (void) depth; (void) format; (void) imageSize; (void) data;
   noop_warn("glCompressedTexSubImage3DARB");
}

static void APIENTRY noopGetCompressedTexImageARB(GLenum target, GLint level, GLvoid *img)
{
   (void) target; (void) level; (void) img;
   noop_warn("glGetCompressedTexImageARB");
}

static void APIENTRY noopDisableVertexAttribArrayARB(GLuint index)
{
   (void) index;
   noop_warn("glDisableVertexAttribArrayARB");
}

static void APIENTRY noopEnableVertexAttribArrayARB(GLuint index)
{
   (void) index;
   noop_warn("glEnableVertexAttribArrayARB");
}

static void APIENTRY noopGetProgramEnvParameterdvARB(GLenum target, GLuint index, GLdouble *params)
{
   (void) target; (void) index; (void) params;
   noop_warn("glGetProgramEnvParameterdvARB");
}

static void APIENTRY noopGetProgramEnvParameterfvARB(GLenum target, GLuint index, GLfloat *params)
{
   (void) target; (void) index; (void) params;
   noop_warn("glGetProgramEnvParameterfvARB");
}

static void APIENTRY noopGetProgramLocalParameterdvARB(GLenum target, GLuint index, GLdouble *params)
{
   (void) target; (void) index; (void) params;
   noop_warn("glGetProgramLocalParameterdvARB");
}

static void APIENTRY noopGetProgramLocalParameterfvARB(GLenum target, GLuint index, GLfloat *params)
{
   (void) target; (void) index; (void) params;
   noop_warn("glGetProgramLocalParameterfvARB");
}

static void APIENTRY noopGetProgramStringARB(GLenum target, GLenum pname, GLvoid *string)
{
   (void) target; (void) pname; (void) string;
   noop_warn("glGetProgramStringARB");
}

static void APIENTRY noopGetProgramivARB(GLenum target, GLenum pname, GLint *params)
{
   (void) target; (void) pname; (void) params;
   noop_warn("glGetProgramivARB");
}

static void APIENTRY noopGetVertexAttribdvARB(GLuint index, GLenum pname, GLdouble *params)
{
   (void) index; (void) pname; (void) params;
   noop_warn("glGetVertexAttribdvARB");
}

static void APIENTRY noopGetVertexAttribfvARB(GLuint index, GLenum pname, GLfloat *params)
{
   (void) index; (void) pname; (void) params;
   noop_warn("glGetVertexAttribfvARB");
}

static void APIENTRY noopGetVertexAttribivARB(GLuint index, GLenum pname, GLint *params)
{
   (void) index; (void) pname; (void) params;
   noop_warn("glGetVertexAttribivARB");
}

static void APIENTRY noopProgramEnvParameter4dARB(GLenum target, GLuint index, GLdouble x, GLdouble y, GLdouble z, GLdouble w)
{
   (void) target; (void) index; (void) x; (void) y; (void) z; (void) w;
   noop_warn("glProgramEnvParameter4dARB");
}

static void APIENTRY noopProgramEnvParameter4dvARB(GLenum target, GLuint index, const GLdouble *params)
{
   (void) target; (void) index; (void) params;
   noop_warn("glProgramEnvParameter4dvARB");
}

static void APIENTRY noopProgramEnvParameter4fARB(GLenum target, GLuint index, GLfloat x, GLfloat y, GLfloat z, GLfloat w)
{
   (void) target; (void) index; (void) x; (void) y; (void) z; (void) w;
   noop_warn("glProgramEnvParameter4fARB");
}

static void APIENTRY noopProgramEnvParameter4fvARB(GLenum target, GLuint index, const GLfloat *params)
{
   (void) target; (void) index; (void) params;
   noop_warn("glProgramEnvParameter4fvARB");
}

static void APIENTRY noopProgramLocalParameter4dARB(GLenum target, GLuint index, GLdouble x, GLdouble y, GLdouble z, GLdouble w)
{
   (void) target; (void) index; (void) x; (void) y; (void) z; (void) w;
   noop_warn("glProgramLocalParameter4dARB");
}

static void APIENTRY noopProgramLocalParameter4dvARB(GLenum target, GLuint index, const GLdouble *params)
{
   (void) target; (void) index; (void) params;
   noop_warn("glProgramLocalParameter4dvARB");
}

static void APIENTRY noopProgramLocalParameter4fARB(GLenum target, GLuint index, GLfloat x, GLfloat y, GLfloat z, GLfloat w)
{
   (void) target; (void) index; (void) x; (void) y; (void) z; (void) w;
   noop_warn("glProgramLocalParameter4fARB");
}

static void APIENTRY noopProgramLocalParameter4fvARB(GLenum target, GLuint index, const GLfloat *params)
{
   (void) target; (void) index; (void) params;
   noop_warn("glProgramLocalParameter4fvARB");
}

static void APIENTRY noopProgramStringARB(GLenum target, GLenum format, GLsizei len, const GLvoid *string)
{
   (void) target; (void) format; (void) len; (void) string;
   noop_warn("glProgramStringARB");
}

static void APIENTRY noopVertexAttrib1dARB(GLuint index, GLdouble x)
{
   (void) index; (void) x;
   noop_warn("glVertexAttrib1dARB");
}

static void APIENTRY noopVertexAttrib1dvARB(GLuint index, const GLdouble *v)
{
   (void) index; (void) v;
   noop_warn("glVertexAttrib1dvARB");
}

static void APIENTRY noopVertexAttrib1fARB(GLuint index, GLfloat x)
{
   (void) index; (void) x;
   noop_warn("glVertexAttrib1fARB");
}

static void APIENTRY noopVertexAttrib1fvARB(GLuint index, const GLfloat *v)
{
   (void) index; (void) v;
   noop_warn("glVertexAttrib1fvARB");
}

static void APIENTRY noopVertexAttrib1sARB(GLuint index, GLshort x)
{
   (void) index; (void) x;
   noop_warn("glVertexAttrib1sARB");
}

static void APIENTRY noopVertexAttrib1svARB(GLuint index, const GLshort *v)
{
   (void) index; (void) v;
   noop_warn("glVertexAttrib1svARB");
}

static void APIENTRY noopVertexAttrib2dARB(GLuint index, GLdouble x, GLdouble y)
{
   (void) index; (void) x; (void) y;
   noop_warn("glVertexAttrib2dARB");
}

static void APIENTRY noopVertexAttrib2dvARB(GLuint index, const GLdouble *v)
{
   (void) index; (void) v;
   noop_warn("glVertexAttrib2dvARB");
}

static void APIENTRY noopVertexAttrib2fARB(GLuint index, GLfloat x, GLfloat y)
{
   (void) index; (void) x; (void) y;
   noop_warn("glVertexAttrib2fARB");
}

static void APIENTRY noopVertexAttrib2fvARB(GLuint index, const GLfloat *v)
{
   (void) index; (void) v;
   noop_warn("glVertexAttrib2fvARB");
}

static void APIENTRY noopVertexAttrib2sARB(GLuint index, GLshort x, GLshort y)
{
   (void) index; (void) x; (void) y;
   noop_warn("glVertexAttrib2sARB");
}

static void APIENTRY noopVertexAttrib2svARB(GLuint index, const GLshort *v)
{
   (void) index; (void) v;
   noop_warn("glVertexAttrib2svARB");
}

static void APIENTRY noopVertexAttrib3dARB(GLuint index, GLdouble x, GLdouble y, GLdouble z)
{
   (void) index; (void) x; (void) y; (void) z;
   noop_warn("glVertexAttrib3dARB");
}

static void APIENTRY noopVertexAttrib3dvARB(GLuint index, const GLdouble *v)
{
   (void) index; (void) v;
   noop_warn("glVertexAttrib3dvARB");
}

static void APIENTRY noopVertexAttrib3fARB(GLuint index, GLfloat x, GLfloat y, GLfloat z)
{
   (void) index; (void) x; (void) y; (void) z;
   noop_warn("glVertexAttrib3fARB");
}

static void APIENTRY noopVertexAttrib3fvARB(GLuint index, const GLfloat *v)
{
   (void) index; (void) v;
   noop_warn("glVertexAttrib3fvARB");
}

static void APIENTRY noopVertexAttrib3sARB(GLuint index, GLshort x, GLshort y, GLshort z)
{
   (void) index; (void) x; (void) y; (void) z;
   noop_warn("glVertexAttrib3sARB");
}

static void APIENTRY noopVertexAttrib3svARB(GLuint index, const GLshort *v)
{
   (void) index; (void) v;
   noop_warn("glVertexAttrib3svARB");
}

static void APIENTRY noopVertexAttrib4NbvARB(GLuint index, const GLbyte *v)
{
   (void) index; (void) v;
   noop_warn("glVertexAttrib4NbvARB");
}

static void APIENTRY noopVertexAttrib4NivARB(GLuint index, const GLint *v)
{
   (void) index; (void) v;
   noop_warn("glVertexAttrib4NivARB");
}

static void APIENTRY noopVertexAttrib4NsvARB(GLuint index, const GLshort *v)
{
   (void) index; (void) v;
   noop_warn("glVertexAttrib4NsvARB");
}

static void APIENTRY noopVertexAttrib4NubARB(GLuint index, GLubyte x, GLubyte y, GLubyte z, GLubyte w)
{
   (void) index; (void) x; (void) y; (void) z; (void) w;
   noop_warn("glVertexAttrib4NubARB");
}

static void APIENTRY noopVertexAttrib4NubvARB(GLuint index, const GLubyte *v)
{
   (void) index; (void) v;
   noop_warn("glVertexAttrib4NubvARB");
}

static void APIENTRY noopVertexAttrib4NuivARB(GLuint index, const GLuint *v)
{
   (void) index; (void) v;
   noop_warn("glVertexAttrib4NuivARB");
}

static void APIENTRY noopVertexAttrib4NusvARB(GLuint index, const GLushort *v)
{
   (void) index; (void) v;
   noop_warn("glVertexAttrib4NusvARB");
}

static void APIENTRY noopVertexAttrib4bvARB(GLuint index, const GLbyte *v)
{
   (void) index; (void) v;
   noop_warn("glVertexAttrib4bvARB");
}

static void APIENTRY noopVertexAttrib4dARB(GLuint index, GLdouble x, GLdouble y, GLdouble z, GLdouble w)
{
   (void) index; (void) x; (void) y; (void) z; (void) w;
   noop_warn("glVertexAttrib4dARB");
}

static void APIENTRY noopVertexAttrib4dvARB(GLuint index, const GLdouble *v)
{
   (void) index; (void) v;
   noop_warn("glVertexAttrib4dvARB");
}

static void APIENTRY noopVertexAttrib4fARB(GLuint index, GLfloat x, GLfloat y, GLfloat z, GLfloat w)
{
   (void) index; (void) x; (void) y; (void) z; (void) w;
   noop_warn("glVertexAttrib4fARB");
}

static void APIENTRY noopVertexAttrib4fvARB(GLuint index, const GLfloat *v)
{
   (void) index; (void) v;
   noop_warn("glVertexAttrib4fvARB");
}

static void APIENTRY noopVertexAttrib4ivARB(GLuint index, const GLint *v)
{
   (void) index; (void) v;
   noop_warn("glVertexAttrib4ivARB");
}

static void APIENTRY noopVertexAttrib4sARB(GLuint index, GLshort x, GLshort y, GLshort z, GLshort w)
{
   (void) index; (void) x; (void) y; (void) z; (void) w;
   noop_warn("glVertexAttrib4sARB");
}

static void APIENTRY noopVertexAttrib4svARB(GLuint index, const GLshort *v)
{
   (void) index; (void) v;
   noop_warn("glVertexAttrib4svARB");
}

static void APIENTRY noopVertexAttrib4ubvARB(GLuint index, const GLubyte *v)
{
   (void) index; (void) v;
   noop_warn("glVertexAttrib4ubvARB");
}

static void APIENTRY noopVertexAttrib4uivARB(GLuint index, const GLuint *v)
{
   (void) index; (void) v;
   noop_warn("glVertexAttrib4uivARB");
}

static void APIENTRY noopVertexAttrib4usvARB(GLuint index, const GLushort *v)
{
   (void) index; (void) v;
   noop_warn("glVertexAttrib4usvARB");
}

static void APIENTRY noopVertexAttribPointerARB(GLuint index, GLint size, GLenum type, GLboolean normalized, GLsizei stride, const GLvoid *pointer)
{
   (void) index; (void) size; (void) type; (void) normalized; (void) stride; (void) pointer;
   noop_warn("glVertexAttribPointerARB");
}

static void APIENTRY noopBindBufferARB(GLenum target, GLuint buffer)
{
   (void) target; (void) buffer;
   noop_warn("glBindBufferARB");
}

static void APIENTRY noopBufferDataARB(GLenum target, GLsizeiptrARB size, const GLvoid *data, GLenum usage)
{
   (void) target; (void) size; (void) data; (void) usage;
   noop_warn("glBufferDataARB");
}

static void APIENTRY noopBufferSubDataARB(GLenum target, GLintptrARB offset, GLsizeiptrARB size, const GLvoid *data)
{
   (void) target; (void) offset; (void) size; (void) data;
   noop_warn("glBufferSubDataARB");
}

static void APIENTRY noopDeleteBuffersARB(GLsizei n, const GLuint *buffer)
{
   (void) n; (void) buffer;
   noop_warn("glDeleteBuffersARB");
}

static void APIENTRY noopGenBuffersARB(GLsizei n, GLuint *buffer)
{
   (void) n; (void) buffer;
   noop_warn("glGenBuffersARB");
}

static void APIENTRY noopGetBufferParameterivARB(GLenum target, GLenum pname, GLint *params)
{
   (void) target; (void) pname; (void) params;
   noop_warn("glGetBufferParameterivARB");
}

static void APIENTRY noopGetBufferPointervARB(GLenum target, GLenum pname, GLvoid **params)
{
   (void) target; (void) pname; (void) params;
   noop_warn("glGetBufferPointervARB");
}

static void APIENTRY noopGetBufferSubDataARB(GLenum target, GLintptrARB offset, GLsizeiptrARB size, GLvoid *data)
{
   (void) target; (void) offset; (void) size; (void) data;
   noop_warn("glGetBufferSubDataARB");
}

static GLboolean APIENTRY noopIsBufferARB(GLuint buffer)
{
   (void) buffer;
   noop_warn("glIsBufferARB");
   return (GLboolean) 0;
}

static GLvoid * APIENTRY noopMapBufferARB(GLenum target, GLenum access)
{
   (void) target; (void) access;
   noop_warn("glMapBufferARB");
   return (GLvoid *) 0;
}

static GLboolean APIENTRY noopUnmapBufferARB(GLenum target)
{
   (void) target;
   noop_warn("glUnmapBufferARB");
   return (GLboolean) 0;
}

static void APIENTRY noopBeginQueryARB(GLenum target, GLuint id)
{
   (void) target; (void) id;
   noop_warn("glBeginQueryARB");
}

static void APIENTRY noopDeleteQueriesARB(GLsizei n, const GLuint *ids)
{
   (void) n; (void) ids;
   noop_warn("glDeleteQueriesARB");
}

static void APIENTRY noopEndQueryARB(GLenum target)
{
   (void) target;
   noop_warn("glEndQueryARB");
}

static void APIENTRY noopGenQueriesARB(GLsizei n, GLuint *ids)
{
   (void) n; (void) ids;
   noop_warn("glGenQueriesARB");
}

static void APIENTRY noopGetQueryObjectivARB(GLuint id, GLenum pname, GLint *params)
{
   (void) id; (void) pname; (void) params;
   noop_warn("glGetQueryObjectivARB");
}

static void APIENTRY noopGetQueryObjectuivARB(GLuint id, GLenum pname, GLuint *params)
{
   (void) id; (void) pname; (void) params;
   noop_warn("glGetQueryObjectuivARB");
}

static void APIENTRY noopGetQueryivARB(GLenum target, GLenum pname, GLint *params)
{
   (void) target; (void) pname; (void) params;
   noop_warn("glGetQueryivARB");
}

static GLboolean APIENTRY noopIsQueryARB(GLuint id)
{
   (void) id;
   noop_warn("glIsQueryARB");
   return (GLboolean) 0;
}

static void APIENTRY noopAttachObjectARB(GLhandleARB containerObj, GLhandleARB obj)
{
   (void) containerObj; (void) obj;
   noop_warn("glAttachObjectARB");
}

static void APIENTRY noopCompileShaderARB(GLhandleARB shader)
{
   (void) shader;
   noop_warn("glCompileShaderARB");
}

static GLhandleARB APIENTRY noopCreateProgramObjectARB(void)
{
      noop_warn("glCreateProgramObjectARB");
   return (GLhandleARB) 0;
}

static GLhandleARB APIENTRY noopCreateShaderObjectARB(GLenum shaderType)
{
   (void) shaderType;
   noop_warn("glCreateShaderObjectARB");
   return (GLhandleARB) 0;
}

static void APIENTRY noopDeleteObjectARB(GLhandleARB obj)
{
   (void) obj;
   noop_warn("glDeleteObjectARB");
}

static void APIENTRY noopDetachObjectARB(GLhandleARB containerObj, GLhandleARB attachedObj)
{
   (void) containerObj; (void) attachedObj;
   noop_warn("glDetachObjectARB");
}

static void APIENTRY noopGetActiveUniformARB(GLhandleARB program, GLuint index, GLsizei bufSize, GLsizei *length, GLint *size, GLenum *type, GLcharARB *name)
{
   (void) program; (void) index; (void) bufSize; (void) length; (void) size; (void) type; (void) name;
   noop_warn("glGetActiveUniformARB");
}

static void APIENTRY noopGetAttachedObjectsARB(GLhandleARB containerObj, GLsizei maxLength, GLsizei *length, GLhandleARB *infoLog)
{
   (void) containerObj; (void) maxLength; (void) length; (void) infoLog;
   noop_warn("glGetAttachedObjectsARB");
}

static GLhandleARB APIENTRY noopGetHandleARB(GLenum pname)
{
   (void) pname;
   noop_warn("glGetHandleARB");
   return (GLhandleARB) 0;
}

static void APIENTRY noopGetInfoLogARB(GLhandleARB obj, GLsizei maxLength, GLsizei *length, GLcharARB *infoLog)
{
   (void) obj; (void) maxLength; (void) length; (void) infoLog;
   noop_warn("glGetInfoLogARB");
}

static void APIENTRY noopGetObjectParameterfvARB(GLhandleARB obj, GLenum pname, GLfloat *params)
{
   (void) obj; (void) pname; (void) params;
   noop_warn("glGetObjectParameterfvARB");
}

static void APIENTRY noopGetObjectParameterivARB(GLhandleARB obj, GLenum pname, GLint *params)
{
   (void) obj; (void) pname; (void) params;
   noop_warn("glGetObjectParameterivARB");
}

static void APIENTRY noopGetShaderSourceARB(GLhandleARB shader, GLsizei bufSize, GLsizei *length, GLcharARB *source)
{
   (void) shader; (void) bufSize; (void) length; (void) source;
   noop_warn("glGetShaderSourceARB");
}

static GLint APIENTRY noopGetUniformLocationARB(GLhandleARB program, const GLcharARB *name)
{
   (void) program; (void) name;
   noop_warn("glGetUniformLocationARB");
   return (GLint) 0;
}

static void APIENTRY noopGetUniformfvARB(GLhandleARB program, GLint location, GLfloat *params)
{
   (void) program; (void) location; (void) params;
   noop_warn("glGetUniformfvARB");
}

static void APIENTRY noopGetUniformivARB(GLhandleARB program, GLint location, GLint *params)
{
   (void) program; (void) location; (void) params;
   noop_warn("glGetUniformivARB");
}

static void APIENTRY noopLinkProgramARB(GLhandleARB program)
{
   (void) program;
   noop_warn("glLinkProgramARB");
}

static void APIENTRY noopShaderSourceARB(GLhandleARB shader, GLsizei count, const GLcharARB **string, const GLint *length)
{
   (void) shader; (void) count; (void) string; (void) length;
   noop_warn("glShaderSourceARB");
}

static void APIENTRY noopUniform1fARB(GLint location, GLfloat v0)
{
   (void) location; (void) v0;
   noop_warn("glUniform1fARB");
}

static void APIENTRY noopUniform1fvARB(GLint location, GLsizei count, const GLfloat *value)
{
   (void) location; (void) count; (void) value;
   noop_warn("glUniform1fvARB");
}

static void APIENTRY noopUniform1iARB(GLint location, GLint v0)
{
   (void) location; (void) v0;
   noop_warn("glUniform1iARB");
}

static void APIENTRY noopUniform1ivARB(GLint location, GLsizei count, const GLint *value)
{
   (void) location; (void) count; (void) value;
   noop_warn("glUniform1ivARB");
}

static void APIENTRY noopUniform2fARB(GLint location, GLfloat v0, GLfloat v1)
{
   (void) location; (void) v0; (void) v1;
   noop_warn("glUniform2fARB");
}

static void APIENTRY noopUniform2fvARB(GLint location, GLsizei count, const GLfloat *value)
{
   (void) location; (void) count; (void) value;
   noop_warn("glUniform2fvARB");
}

static void APIENTRY noopUniform2iARB(GLint location, GLint v0, GLint v1)
{
   (void) location; (void) v0; (void) v1;
   noop_warn("glUniform2iARB");
}

static void APIENTRY noopUniform2ivARB(GLint location, GLsizei count, const GLint *value)
{
   (void) location; (void) count; (void) value;
   noop_warn("glUniform2ivARB");
}

static void APIENTRY noopUniform3fARB(GLint location, GLfloat v0, GLfloat v1, GLfloat v2)
{
   (void) location; (void) v0; (void) v1; (void) v2;
   noop_warn("glUniform3fARB");
}

static void APIENTRY noopUniform3fvARB(GLint location, GLsizei count, const GLfloat *value)
{
   (void) location; (void) count; (void) value;
   noop_warn("glUniform3fvARB");
}

static void APIENTRY noopUniform3iARB(GLint location, GLint v0, GLint v1, GLint v2)
{
   (void) location; (void) v0; (void) v1; (void) v2;
   noop_warn("glUniform3iARB");
}

static void APIENTRY noopUniform3ivARB(GLint location, GLsizei count, const GLint *value)
{
   (void) location; (void) count; (void) value;
   noop_warn("glUniform3ivARB");
}

static void APIENTRY noopUniform4fARB(GLint location, GLfloat v0, GLfloat v1, GLfloat v2, GLfloat v3)
{
   (void) location; (void) v0; (void) v1; (void) v2; (void) v3;
   noop_warn("glUniform4fARB");
}

static void APIENTRY noopUniform4fvARB(GLint location, GLsizei count, const GLfloat *value)
{
   (void) location; (void) count; (void) value;
   noop_warn("glUniform4fvARB");
}

static void APIENTRY noopUniform4iARB(GLint location, GLint v0, GLint v1, GLint v2, GLint v3)
{
   (void) location; (void) v0; (void) v1; (void) v2; (void) v3;
   noop_warn("glUniform4iARB");
}

static void APIENTRY noopUniform4ivARB(GLint location, GLsizei count, const GLint *value)
{
   (void) location; (void) count; (void) value;
   noop_warn("glUniform4ivARB");
}

static void APIENTRY noopUniformMatrix2fvARB(GLint location, GLsizei count, GLboolean transpose, const GLfloat *value)
{
   (void) location; (void) count; (void) transpose; (void) value;
   noop_warn("glUniformMatrix2fvARB");
}

static void APIENTRY noopUniformMatrix3fvARB(GLint location, GLsizei count, GLboolean transpose, const GLfloat *value)
{
   (void) location; (void) count; (void) transpose; (void) value;
   noop_warn("glUniformMatrix3fvARB");
}

static void APIENTRY noopUniformMatrix4fvARB(GLint location, GLsizei count, GLboolean transpose, const GLfloat *value)
{
   (void) location; (void) count; (void) transpose; (void) value;
   noop_warn("glUniformMatrix4fvARB");
}

static void APIENTRY noopUseProgramObjectARB(GLhandleARB program)
{
   (void) program;
   noop_warn("glUseProgramObjectARB");
}

static void APIENTRY noopValidateProgramARB(GLhandleARB program)
{
   (void) program;
   noop_warn("glValidateProgramARB");
}

static void APIENTRY noopBindAttribLocationARB(GLhandleARB program, GLuint index, const GLcharARB *name)
{
   (void) program; (void) index; (void) name;
   noop_warn("glBindAttribLocationARB");
}

static void APIENTRY noopGetActiveAttribARB(GLhandleARB program, GLuint index, GLsizei bufSize, GLsizei *length, GLint *size, GLenum *type, GLcharARB *name)
{
   (void) program; (void) index; (void) bufSize; (void) length; (void) size; (void) type; (void) name;
   noop_warn("glGetActiveAttribARB");
}

static GLint APIENTRY noopGetAttribLocationARB(GLhandleARB program, const GLcharARB *name)
{
   (void) program; (void) name;
   noop_warn("glGetAttribLocationARB");
   return (GLint) 0;
}

static void APIENTRY noopDrawBuffersARB(GLsizei n, const GLenum *bufs)
{
   (void) n; (void) bufs;
   noop_warn("glDrawBuffersARB");
}

static void APIENTRY noopClampColorARB(GLenum target, GLenum clamp)
{
   (void) target; (void) clamp;
   noop_warn("glClampColorARB");
}

static void APIENTRY noopDrawArraysInstancedARB(GLenum mode, GLint first, GLsizei count, GLsizei primcount)
{
   (void) mode; (void) first; (void) count; (void) primcount;
   noop_warn("glDrawArraysInstancedARB");
}

static void APIENTRY noopDrawElementsInstancedARB(GLenum mode, GLsizei count, GLenum type, const GLvoid *indices, GLsizei primcount)
{
   (void) mode; (void) count; (void) type; (void) indices; (void) primcount;
   noop_warn("glDrawElementsInstancedARB");
}

static void APIENTRY noopRenderbufferStorageMultisample(GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height)
{
   (void) target; (void) samples; (void) internalformat; (void) width; (void) height;
   noop_warn("glRenderbufferStorageMultisample");
}

static void APIENTRY noopFramebufferTextureARB(GLenum target, GLenum attachment, GLuint texture, GLint level)
{
   (void) target; (void) attachment; (void) texture; (void) level;
   noop_warn("glFramebufferTextureARB");
}

static void APIENTRY noopFramebufferTextureFaceARB(GLenum target, GLenum attachment, GLuint texture, GLint level, GLenum face)
{
   (void) target; (void) attachment; (void) texture; (void) level; (void) face;
   noop_warn("glFramebufferTextureFaceARB");
}

static void APIENTRY noopProgramParameteriARB(GLuint program, GLenum pname, GLint value)
{
   (void) program; (void) pname; (void) value;
   noop_warn("glProgramParameteriARB");
}

static void APIENTRY noopVertexAttribDivisorARB(GLuint index, GLuint divisor)
{
   (void) index; (void) divisor;
   noop_warn("glVertexAttribDivisorARB");
}

static void APIENTRY noopFlushMappedBufferRange(GLenum target, GLintptr offset, GLsizeiptr length)
{
   (void) target; (void) offset; (void) length;
   noop_warn("glFlushMappedBufferRange");
}

static GLvoid * APIENTRY noopMapBufferRange(GLenum target, GLintptr offset, GLsizeiptr length, GLbitfield access)
{
   (void) target; (void) offset; (void) length; (void) access;
   noop_warn("glMapBufferRange");
   return (GLvoid *) 0;
}

static void APIENTRY noopTexBufferARB(GLenum target, GLenum internalFormat, GLuint buffer)
{
   (void) target; (void) internalFormat; (void) buffer;
   noop_warn("glTexBufferARB");
}

static void APIENTRY noopBindVertexArray(GLuint array)
{
   (void) array;
   noop_warn("glBindVertexArray");
}

static void APIENTRY noopGenVertexArrays(GLsizei n, GLuint *arrays)
{
   (void) n; (void) arrays;
   noop_warn("glGenVertexArrays");
}

static void APIENTRY noopGetActiveUniformBlockName(GLuint program, GLuint uniformBlockIndex, GLsizei bufSize, GLsizei *length, GLchar *uniformBlockName)
{
   (void) program; (void) uniformBlockIndex; (void) bufSize; (void) length; (void) uniformBlockName;
   noop_warn("glGetActiveUniformBlockName");
}

static void APIENTRY noopGetActiveUniformBlockiv(GLuint program, GLuint uniformBlockIndex, GLenum pname, GLint *params)
{
   (void) program; (void) uniformBlockIndex; (void) pname; (void) params;
   noop_warn("glGetActiveUniformBlockiv");
}

static void APIENTRY noopGetActiveUniformName(GLuint program, GLuint uniformIndex, GLsizei bufSize, GLsizei *length, GLchar *uniformName)
{
   (void) program; (void) uniformIndex; (void) bufSize; (void) length; (void) uniformName;
   noop_warn("glGetActiveUniformName");
}

static void APIENTRY noopGetActiveUniformsiv(GLuint program, GLsizei uniformCount, const GLuint *uniformIndices, GLenum pname, GLint *params)
{
   (void) program; (void) uniformCount; (void) uniformIndices; (void) pname; (void) params;
   noop_warn("glGetActiveUniformsiv");
}

static GLuint APIENTRY noopGetUniformBlockIndex(GLuint program, const GLchar *uniformBlockName)
{
   (void) program; (void) uniformBlockName;
   noop_warn("glGetUniformBlockIndex");
   return (GLuint) 0;
}

static void APIENTRY noopGetUniformIndices(GLuint program, GLsizei uniformCount, const GLchar * const *uniformNames, GLuint *uniformIndices)
{
   (void) program; (void) uniformCount; (void) uniformNames; (void) uniformIndices;
   noop_warn("glGetUniformIndices");
}

static void APIENTRY noopUniformBlockBinding(GLuint program, GLuint uniformBlockIndex, GLuint uniformBlockBinding)
{
   (void) program; (void) uniformBlockIndex; (void) uniformBlockBinding;
   noop_warn("glUniformBlockBinding");
}

static void APIENTRY noopCopyBufferSubData(GLenum readTarget, GLenum writeTarget, GLintptr readOffset, GLintptr writeOffset, GLsizeiptr size)
{
   (void) readTarget; (void) writeTarget; (void) readOffset; (void) writeOffset; (void) size;
   noop_warn("glCopyBufferSubData");
}

static GLenum APIENTRY noopClientWaitSync(GLsync sync, GLbitfield flags, GLuint64 timeout)
{
   (void) sync; (void) flags; (void) timeout;
   noop_warn("glClientWaitSync");
   return (GLenum) 0;
}

static void APIENTRY noopDeleteSync(GLsync sync)
{
   (void) sync;
   noop_warn("glDeleteSync");
}

static GLsync APIENTRY noopFenceSync(GLenum condition, GLbitfield flags)
{
   (void) condition; (void) flags;
   noop_warn("glFenceSync");
   return (GLsync) 0;
}

static void APIENTRY noopGetInteger64v(GLenum pname, GLint64 *params)
{
   (void) pname; (void) params;
   noop_warn("glGetInteger64v");
}

static void APIENTRY noopGetSynciv(GLsync sync, GLenum pname, GLsizei bufSize, GLsizei *length, GLint *values)
{
   (void) sync; (void) pname; (void) bufSize; (void) length; (void) values;
   noop_warn("glGetSynciv");
}

static GLboolean APIENTRY noopIsSync(GLsync sync)
{
   (void) sync;
   noop_warn("glIsSync");
   return (GLboolean) 0;
}

static void APIENTRY noopWaitSync(GLsync sync, GLbitfield flags, GLuint64 timeout)
{
   (void) sync; (void) flags; (void) timeout;
   noop_warn("glWaitSync");
}

static void APIENTRY noopDrawElementsBaseVertex(GLenum mode, GLsizei count, GLenum type, const GLvoid *indices, GLint basevertex)
{
   (void) mode; (void) count; (void) type; (void) indices; (void) basevertex;
   noop_warn("glDrawElementsBaseVertex");
}

static void APIENTRY noopDrawElementsInstancedBaseVertex(GLenum mode, GLsizei count, GLenum type, const GLvoid *indices, GLsizei primcount, GLint basevertex)
{
   (void) mode; (void) count; (void) type; (void) indices; (void) primcount; (void) basevertex;
   noop_warn("glDrawElementsInstancedBaseVertex");
}

static void APIENTRY noopDrawRangeElementsBaseVertex(GLenum mode, GLuint start, GLuint end, GLsizei count, GLenum type, const GLvoid *indices, GLint basevertex)
{
   (void) mode; (void) start; (void) end; (void) count; (void) type; (void) indices; (void) basevertex;
   noop_warn("glDrawRangeElementsBaseVertex");
}

static void APIENTRY noopMultiDrawElementsBaseVertex(GLenum mode, const GLsizei *count, GLenum type, const GLvoid * const *indices, GLsizei primcount, const GLint *basevertex)
{
   (void) mode; (void) count; (void) type; (void) indices; (void) primcount; (void) basevertex;
   noop_warn("glMultiDrawElementsBaseVertex");
}

static void APIENTRY noopBlendEquationSeparateiARB(GLuint buf, GLenum modeRGB, GLenum modeA)
{
   (void) buf; (void) modeRGB; (void) modeA;
   noop_warn("glBlendEquationSeparateiARB");
}

static void APIENTRY noopBlendEquationiARB(GLuint buf, GLenum mode)
{
   (void) buf; (void) mode;
   noop_warn("glBlendEquationiARB");
}

static void APIENTRY noopBlendFuncSeparateiARB(GLuint buf, GLenum srcRGB, GLenum dstRGB, GLenum srcA, GLenum dstA)
{
   (void) buf; (void) srcRGB; (void) dstRGB; (void) srcA; (void) dstA;
   noop_warn("glBlendFuncSeparateiARB");
}

static void APIENTRY noopBlendFunciARB(GLuint buf, GLenum src, GLenum dst)
{
   (void) buf; (void) src; (void) dst;
   noop_warn("glBlendFunciARB");
}

static void APIENTRY noopBindFragDataLocationIndexed(GLuint program, GLuint colorNumber, GLuint index, const GLchar *name)
{
   (void) program; (void) colorNumber; (void) index; (void) name;
   noop_warn("glBindFragDataLocationIndexed");
}

static GLint APIENTRY noopGetFragDataIndex(GLuint program, const GLchar *name)
{
   (void) program; (void) name;
   noop_warn("glGetFragDataIndex");
   return (GLint) 0;
}

static void APIENTRY noopBindSampler(GLuint unit, GLuint sampler)
{
   (void) unit; (void) sampler;
   noop_warn("glBindSampler");
}

static void APIENTRY noopDeleteSamplers(GLsizei count, const GLuint *samplers)
{
   (void) count; (void) samplers;
   noop_warn("glDeleteSamplers");
}

static void APIENTRY noopGenSamplers(GLsizei count, GLuint *samplers)
{
   (void) count; (void) samplers;
   noop_warn("glGenSamplers");
}

static void APIENTRY noopGetSamplerParameterIiv(GLuint sampler, GLenum pname, GLint *params)
{
   (void) sampler; (void) pname; (void) params;
   noop_warn("glGetSamplerParameterIiv");
}

static void APIENTRY noopGetSamplerParameterIuiv(GLuint sampler, GLenum pname, GLuint *params)
{
   (void) sampler; (void) pname; (void) params;
   noop_warn("glGetSamplerParameterIuiv");
}

static void APIENTRY noopGetSamplerParameterfv(GLuint sampler, GLenum pname, GLfloat *params)
{
   (void) sampler; (void) pname; (void) params;
   noop_warn("glGetSamplerParameterfv");
}

static void APIENTRY noopGetSamplerParameteriv(GLuint sampler, GLenum pname, GLint *params)
{
   (void) sampler; (void) pname; (void) params;
   noop_warn("glGetSamplerParameteriv");
}

static GLboolean APIENTRY noopIsSampler(GLuint sampler)
{
   (void) sampler;
   noop_warn("glIsSampler");
   return (GLboolean) 0;
}

static void APIENTRY noopSamplerParameterIiv(GLuint sampler, GLenum pname, const GLint *params)
{
   (void) sampler; (void) pname; (void) params;
   noop_warn("glSamplerParameterIiv");
}

static void APIENTRY noopSamplerParameterIuiv(GLuint sampler, GLenum pname, const GLuint *params)
{
   (void) sampler; (void) pname; (void) params;
   noop_warn("glSamplerParameterIuiv");
}

static void APIENTRY noopSamplerParameterf(GLuint sampler, GLenum pname, GLfloat param)
{
   (void) sampler; (void) pname; (void) param;
   noop_warn("glSamplerParameterf");
}

static void APIENTRY noopSamplerParameterfv(GLuint sampler, GLenum pname, const GLfloat *params)
{
   (void) sampler; (void) pname; (void) params;
   noop_warn("glSamplerParameterfv");
}

static void APIENTRY noopSamplerParameteri(GLuint sampler, GLenum pname, GLint param)
{
   (void) sampler; (void) pname; (void) param;
   noop_warn("glSamplerParameteri");
}

static void APIENTRY noopSamplerParameteriv(GLuint sampler, GLenum pname, const GLint *params)
{
   (void) sampler; (void) pname; (void) params;
   noop_warn("glSamplerParameteriv");
}

static void APIENTRY noopQueryCounter(GLuint id, GLenum target)
{
   (void) id; (void) target;
   noop_warn("glQueryCounter");
}

static void APIENTRY noopColorP3ui(GLenum type, GLuint color)
{
   (void) type; (void) color;
   noop_warn("glColorP3ui");
}

static void APIENTRY noopColorP3uiv(GLenum type, const GLuint *color)
{
   (void) type; (void) color;
   noop_warn("glColorP3uiv");
}

static void APIENTRY noopColorP4ui(GLenum type, GLuint color)
{
   (void) type; (void) color;
   noop_warn("glColorP4ui");
}

static void APIENTRY noopColorP4uiv(GLenum type, const GLuint *color)
{
   (void) type; (void) color;
   noop_warn("glColorP4uiv");
}

static void APIENTRY noopMultiTexCoordP1ui(GLenum texture, GLenum type, GLuint coords)
{
   (void) texture; (void) type; (void) coords;
   noop_warn("glMultiTexCoordP1ui");
}

static void APIENTRY noopMultiTexCoordP1uiv(GLenum texture, GLenum type, const GLuint *coords)
{
   (void) texture; (void) type; (void) coords;
   noop_warn("glMultiTexCoordP1uiv");
}

static void APIENTRY noopMultiTexCoordP2ui(GLenum texture, GLenum type, GLuint coords)
{
   (void) texture; (void) type; (void) coords;
   noop_warn("glMultiTexCoordP2ui");
}

static void APIENTRY noopMultiTexCoordP2uiv(GLenum texture, GLenum type, const GLuint *coords)
{
   (void) texture; (void) type; (void) coords;
   noop_warn("glMultiTexCoordP2uiv");
}

static void APIENTRY noopMultiTexCoordP3ui(GLenum texture, GLenum type, GLuint coords)
{
   (void) texture; (void) type; (void) coords;
   noop_warn("glMultiTexCoordP3ui");
}

static void APIENTRY noopMultiTexCoordP3uiv(GLenum texture, GLenum type, const GLuint *coords)
{
   (void) texture; (void) type; (void) coords;
   noop_warn("glMultiTexCoordP3uiv");
}

static void APIENTRY noopMultiTexCoordP4ui(GLenum texture, GLenum type, GLuint coords)
{
   (void) texture; (void) type; (void) coords;
   noop_warn("glMultiTexCoordP4ui");
}

static void APIENTRY noopMultiTexCoordP4uiv(GLenum texture, GLenum type, const GLuint *coords)
{
   (void) texture; (void) type; (void) coords;
   noop_warn("glMultiTexCoordP4uiv");
}

static void APIENTRY noopNormalP3ui(GLenum type, GLuint coords)
{
   (void) type; (void) coords;
   noop_warn("glNormalP3ui");
}

static void APIENTRY noopNormalP3uiv(GLenum type, const GLuint *coords)
{
   (void) type; (void) coords;
   noop_warn("glNormalP3uiv");
}

static void APIENTRY noopSecondaryColorP3ui(GLenum type, GLuint color)
{
   (void) type; (void) color;
   noop_warn("glSecondaryColorP3ui");
}

static void APIENTRY noopSecondaryColorP3uiv(GLenum type, const GLuint *color)
{
   (void) type; (void) color;
   noop_warn("glSecondaryColorP3uiv");
}

static void APIENTRY noopTexCoordP1ui(GLenum type, GLuint coords)
{
   (void) type; (void) coords;
   noop_warn("glTexCoordP1ui");
}

static void APIENTRY noopTexCoordP1uiv(GLenum type, const GLuint *coords)
{
   (void) type; (void) coords;
   noop_warn("glTexCoordP1uiv");
}

static void APIENTRY noopTexCoordP2ui(GLenum type, GLuint coords)
{
   (void) type; (void) coords;
   noop_warn("glTexCoordP2ui");
}

static void APIENTRY noopTexCoordP2uiv(GLenum type, const GLuint *coords)
{
   (void) type; (void) coords;
   noop_warn("glTexCoordP2uiv");
}

static void APIENTRY noopTexCoordP3ui(GLenum type, GLuint coords)
{
   (void) type; (void) coords;
   noop_warn("glTexCoordP3ui");
}

static void APIENTRY noopTexCoordP3uiv(GLenum type, const GLuint *coords)
{
   (void) type; (void) coords;
   noop_warn("glTexCoordP3uiv");
}

static void APIENTRY noopTexCoordP4ui(GLenum type, GLuint coords)
{
   (void) type; (void) coords;
   noop_warn("glTexCoordP4ui");
}

static void APIENTRY noopTexCoordP4uiv(GLenum type, const GLuint *coords)
{
   (void) type; (void) coords;
   noop_warn("glTexCoordP4uiv");
}

static void APIENTRY noopVertexAttribP1ui(GLuint index, GLenum type, GLboolean normalized, GLuint value)
{
   (void) index; (void) type; (void) normalized; (void) value;
   noop_warn("glVertexAttribP1ui");
}

static void APIENTRY noopVertexAttribP1uiv(GLuint index, GLenum type, GLboolean normalized, const GLuint *value)
{
   (void) index; (void) type; (void) normalized; (void) value;
   noop_warn("glVertexAttribP1uiv");
}

static void APIENTRY noopVertexAttribP2ui(GLuint index, GLenum type, GLboolean normalized, GLuint value)
{
   (void) index; (void) type; (void) normalized; (void) value;
   noop_warn("glVertexAttribP2ui");
}

static void APIENTRY noopVertexAttribP2uiv(GLuint index, GLenum type, GLboolean normalized, const GLuint *value)
{
   (void) index; (void) type; (void) normalized; (void) value;
   noop_warn("glVertexAttribP2uiv");
}

static void APIENTRY noopVertexAttribP3ui(GLuint index, GLenum type, GLboolean normalized, GLuint value)
{
   (void) index; (void) type; (void) normalized; (void) value;
   noop_warn("glVertexAttribP3ui");
}

static void APIENTRY noopVertexAttribP3uiv(GLuint index, GLenum type, GLboolean normalized, const GLuint *value)
{
   (void) index; (void) type; (void) normalized; (void) value;
   noop_warn("glVertexAttribP3uiv");
}

static void APIENTRY noopVertexAttribP4ui(GLuint index, GLenum type, GLboolean normalized, GLuint value)
{
   (void) index; (void) type; (void) normalized; (void) value;
   noop_warn("glVertexAttribP4ui");
}

static void APIENTRY noopVertexAttribP4uiv(GLuint index, GLenum type, GLboolean normalized, const GLuint *value)
{
   (void) index; (void) type; (void) normalized; (void) value;
   noop_warn("glVertexAttribP4uiv");
}

static void APIENTRY noopVertexP2ui(GLenum type, GLuint value)
{
   (void) type; (void) value;
   noop_warn("glVertexP2ui");
}

static void APIENTRY noopVertexP2uiv(GLenum type, const GLuint *value)
{
   (void) type; (void) value;
   noop_warn("glVertexP2uiv");
}

static void APIENTRY noopVertexP3ui(GLenum type, GLuint value)
{
   (void) type; (void) value;
   noop_warn("glVertexP3ui");
}

static void APIENTRY noopVertexP3uiv(GLenum type, const GLuint *value)
{
   (void) type; (void) value;
   noop_warn("glVertexP3uiv");
}

static void APIENTRY noopVertexP4ui(GLenum type, GLuint value)
{
   (void) type; (void) value;
   noop_warn("glVertexP4ui");
}

static void APIENTRY noopVertexP4uiv(GLenum type, const GLuint *value)
{
   (void) type; (void) value;
   noop_warn("glVertexP4uiv");
}

static void APIENTRY noopBindTransformFeedback(GLenum target, GLuint id)
{
   (void) target; (void) id;
   noop_warn("glBindTransformFeedback");
}

static void APIENTRY noopDeleteTransformFeedbacks(GLsizei n, const GLuint *ids)
{
   (void) n; (void) ids;
   noop_warn("glDeleteTransformFeedbacks");
}

static void APIENTRY noopDrawTransformFeedback(GLenum mode, GLuint id)
{
   (void) mode; (void) id;
   noop_warn("glDrawTransformFeedback");
}

static void APIENTRY noopGenTransformFeedbacks(GLsizei n, GLuint *ids)
{
   (void) n; (void) ids;
   noop_warn("glGenTransformFeedbacks");
}

static GLboolean APIENTRY noopIsTransformFeedback(GLuint id)
{
   (void) id;
   noop_warn("glIsTransformFeedback");
   return (GLboolean) 0;
}

static void APIENTRY noopPauseTransformFeedback(void)
{
      noop_warn("glPauseTransformFeedback");
}

static void APIENTRY noopResumeTransformFeedback(void)
{
      noop_warn("glResumeTransformFeedback");
}

static void APIENTRY noopBeginQueryIndexed(GLenum target, GLuint index, GLuint id)
{
   (void) target; (void) index; (void) id;
   noop_warn("glBeginQueryIndexed");
}

static void APIENTRY noopDrawTransformFeedbackStream(GLenum mode, GLuint id, GLuint stream)
{
   (void) mode; (void) id; (void) stream;
   noop_warn("glDrawTransformFeedbackStream");
}

static void APIENTRY noopEndQueryIndexed(GLenum target, GLuint index)
{
   (void) target; (void) index;
   noop_warn("glEndQueryIndexed");
}

static void APIENTRY noopGetQueryIndexediv(GLenum target, GLuint index, GLenum pname, GLint *params)
{
   (void) target; (void) index; (void) pname; (void) params;
   noop_warn("glGetQueryIndexediv");
}

static void APIENTRY noopClearDepthf(GLclampf depth)
{
   (void) depth;
   noop_warn("glClearDepthf");
}

static void APIENTRY noopDepthRangef(GLclampf zNear, GLclampf zFar)
{
   (void) zNear; (void) zFar;
   noop_warn("glDepthRangef");
}

static void APIENTRY noopGetShaderPrecisionFormat(GLenum shadertype, GLenum precisiontype, GLint *range, GLint *precision)
{
   (void) shadertype; (void) precisiontype; (void) range; (void) precision;
   noop_warn("glGetShaderPrecisionFormat");
}

static void APIENTRY noopReleaseShaderCompiler(void)
{
      noop_warn("glReleaseShaderCompiler");
}

static void APIENTRY noopShaderBinary(GLsizei n, const GLuint *shaders, GLenum binaryformat, const GLvoid *binary, GLsizei length)
{
   (void) n; (void) shaders; (void) binaryformat; (void) binary; (void) length;
   noop_warn("glShaderBinary");
}

static void APIENTRY noopGetProgramBinary(GLuint program, GLsizei bufSize, GLsizei *length, GLenum *binaryFormat, GLvoid *binary)
{
   (void) program; (void) bufSize; (void) length; (void) binaryFormat; (void) binary;
   noop_warn("glGetProgramBinary");
}

static void APIENTRY noopProgramBinary(GLuint program, GLenum binaryFormat, const GLvoid *binary, GLsizei length)
{
   (void) program; (void) binaryFormat; (void) binary; (void) length;
   noop_warn("glProgramBinary");
}

static void APIENTRY noopProgramParameteri(GLuint program, GLenum pname, GLint value)
{
   (void) program; (void) pname; (void) value;
   noop_warn("glProgramParameteri");
}

static void APIENTRY noopDebugMessageCallbackARB(GLDEBUGPROCARB callback, const GLvoid *userParam)
{
   (void) callback; (void) userParam;
   noop_warn("glDebugMessageCallbackARB");
}

static void APIENTRY noopDebugMessageControlARB(GLenum source, GLenum type, GLenum severity, GLsizei count, const GLuint *ids, GLboolean enabled)
{
   (void) source; (void) type; (void) severity; (void) count; (void) ids; (void) enabled;
   noop_warn("glDebugMessageControlARB");
}

static void APIENTRY noopDebugMessageInsertARB(GLenum source, GLenum type, GLuint id, GLenum severity, GLsizei length, const GLcharARB *buf)
{
   (void) source; (void) type; (void) id; (void) severity; (void) length; (void) buf;
   noop_warn("glDebugMessageInsertARB");
}

static GLuint APIENTRY noopGetDebugMessageLogARB(GLuint count, GLsizei bufsize, GLenum *sources, GLenum *types, GLuint *ids, GLenum *severities, GLsizei *lengths, GLcharARB *messageLog)
{
   (void) count; (void) bufsize; (void) sources; (void) types; (void) ids; (void) severities; (void) lengths; (void) messageLog;
   noop_warn("glGetDebugMessageLogARB");
   return (GLuint) 0;
}

static GLenum APIENTRY noopGetGraphicsResetStatusARB(void)
{
      noop_warn("glGetGraphicsResetStatusARB");
   return (GLenum) 0;
}

static void APIENTRY noopGetnColorTableARB(GLenum target, GLenum format, GLenum type, GLsizei bufSize, GLvoid *table)
{
   (void) target; (void) format; (void) type; (void) bufSize; (void) table;
   noop_warn("glGetnColorTableARB");
}

static void APIENTRY noopGetnCompressedTexImageARB(GLenum target, GLint lod, GLsizei bufSize, GLvoid *img)
{
   (void) target; (void) lod; (void) bufSize; (void) img;
   noop_warn("glGetnCompressedTexImageARB");
}

static void APIENTRY noopGetnConvolutionFilterARB(GLenum target, GLenum format, GLenum type, GLsizei bufSize, GLvoid *image)
{
   (void) target; (void) format; (void) type; (void) bufSize; (void) image;
   noop_warn("glGetnConvolutionFilterARB");
}

static void APIENTRY noopGetnHistogramARB(GLenum target, GLboolean reset, GLenum format, GLenum type, GLsizei bufSize, GLvoid *values)
{
   (void) target; (void) reset; (void) format; (void) type; (void) bufSize; (void) values;
   noop_warn("glGetnHistogramARB");
}

static void APIENTRY noopGetnMapdvARB(GLenum target, GLenum query, GLsizei bufSize, GLdouble *v)
{
   (void) target; (void) query; (void) bufSize; (void) v;
   noop_warn("glGetnMapdvARB");
}

static void APIENTRY noopGetnMapfvARB(GLenum target, GLenum query, GLsizei bufSize, GLfloat *v)
{
   (void) target; (void) query; (void) bufSize; (void) v;
   noop_warn("glGetnMapfvARB");
}

static void APIENTRY noopGetnMapivARB(GLenum target, GLenum query, GLsizei bufSize, GLint *v)
{
   (void) target; (void) query; (void) bufSize; (void) v;
   noop_warn("glGetnMapivARB");
}

static void APIENTRY noopGetnMinmaxARB(GLenum target, GLboolean reset, GLenum format, GLenum type, GLsizei bufSize, GLvoid *values)
{
   (void) target; (void) reset; (void) format; (void) type; (void) bufSize; (void) values;
   noop_warn("glGetnMinmaxARB");
}

static void APIENTRY noopGetnPixelMapfvARB(GLenum map, GLsizei bufSize, GLfloat *values)
{
   (void) map; (void) bufSize; (void) values;
   noop_warn("glGetnPixelMapfvARB");
}

static void APIENTRY noopGetnPixelMapuivARB(GLenum map, GLsizei bufSize, GLuint *values)
{
   (void) map; (void) bufSize; (void) values;
   noop_warn("glGetnPixelMapuivARB");
}

static void APIENTRY noopGetnPixelMapusvARB(GLenum map, GLsizei bufSize, GLushort *values)
{
   (void) map; (void) bufSize; (void) values;
   noop_warn("glGetnPixelMapusvARB");
}

static void APIENTRY noopGetnPolygonStippleARB(GLsizei bufSize, GLubyte *pattern)
{
   (void) bufSize; (void) pattern;
   noop_warn("glGetnPolygonStippleARB");
}

static void APIENTRY noopGetnSeparableFilterARB(GLenum target, GLenum format, GLenum type, GLsizei rowBufSize, GLvoid *row, GLsizei columnBufSize, GLvoid *column, GLvoid *span)
{
   (void) target; (void) format; (void) type; (void) rowBufSize; (void) row; (void) columnBufSize; (void) column; (void) span;
   noop_warn("glGetnSeparableFilterARB");
}

static void APIENTRY noopGetnTexImageARB(GLenum target, GLint level, GLenum format, GLenum type, GLsizei bufSize, GLvoid *img)
{
   (void) target; (void) level; (void) format; (void) type; (void) bufSize; (void) img;
   noop_warn("glGetnTexImageARB");
}

static void APIENTRY noopGetnUniformdvARB(GLhandleARB program, GLint location, GLsizei bufSize, GLdouble *params)
{
   (void) program; (void) location; (void) bufSize; (void) params;
   noop_warn("glGetnUniformdvARB");
}

static void APIENTRY noopGetnUniformfvARB(GLhandleARB program, GLint location, GLsizei bufSize, GLfloat *params)
{
   (void) program; (void) location; (void) bufSize; (void) params;
   noop_warn("glGetnUniformfvARB");
}

static void APIENTRY noopGetnUniformivARB(GLhandleARB program, GLint location, GLsizei bufSize, GLint *params)
{
   (void) program; (void) location; (void) bufSize; (void) params;
   noop_warn("glGetnUniformivARB");
}

static void APIENTRY noopGetnUniformuivARB(GLhandleARB program, GLint location, GLsizei bufSize, GLuint *params)
{
   (void) program; (void) location; (void) bufSize; (void) params;
   noop_warn("glGetnUniformuivARB");
}

static void APIENTRY noopReadnPixelsARB(GLint x, GLint y, GLsizei width, GLsizei height, GLenum format, GLenum type, GLsizei bufSize, GLvoid *data)
{
   (void) x; (void) y; (void) width; (void) height; (void) format; (void) type; (void) bufSize; (void) data;
   noop_warn("glReadnPixelsARB");
}

static void APIENTRY noopDrawArraysInstancedBaseInstance(GLenum mode, GLint first, GLsizei count, GLsizei primcount, GLuint baseinstance)
{
   (void) mode; (void) first; (void) count; (void) primcount; (void) baseinstance;
   noop_warn("glDrawArraysInstancedBaseInstance");
}

static void APIENTRY noopDrawElementsInstancedBaseInstance(GLenum mode, GLsizei count, GLenum type, const GLvoid *indices, GLsizei primcount, GLuint baseinstance)
{
   (void) mode; (void) count; (void) type; (void) indices; (void) primcount; (void) baseinstance;
   noop_warn("glDrawElementsInstancedBaseInstance");
}

static void APIENTRY noopDrawElementsInstancedBaseVertexBaseInstance(GLenum mode, GLsizei count, GLenum type, const GLvoid *indices, GLsizei primcount, GLint basevertex, GLuint baseinstance)
{
   (void) mode; (void) count; (void) type; (void) indices; (void) primcount; (void) basevertex; (void) baseinstance;
   noop_warn("glDrawElementsInstancedBaseVertexBaseInstance");
}

static void APIENTRY noopDrawTransformFeedbackInstanced(GLenum mode, GLuint id, GLsizei primcount)
{
   (void) mode; (void) id; (void) primcount;
   noop_warn("glDrawTransformFeedbackInstanced");
}

static void APIENTRY noopDrawTransformFeedbackStreamInstanced(GLenum mode, GLuint id, GLuint stream, GLsizei primcount)
{
   (void) mode; (void) id; (void) stream; (void) primcount;
   noop_warn("glDrawTransformFeedbackStreamInstanced");
}

static void APIENTRY noopTexStorage1D(GLenum target, GLsizei levels, GLenum internalFormat, GLsizei width)
{
   (void) target; (void) levels; (void) internalFormat; (void) width;
   noop_warn("glTexStorage1D");
}

static void APIENTRY noopTexStorage2D(GLenum target, GLsizei levels, GLenum internalFormat, GLsizei width, GLsizei height)
{
   (void) target; (void) levels; (void) internalFormat; (void) width; (void) height;
   noop_warn("glTexStorage2D");
}

static void APIENTRY noopTexStorage3D(GLenum target, GLsizei levels, GLenum internalFormat, GLsizei width, GLsizei height, GLsizei depth)
{
   (void) target; (void) levels; (void) internalFormat; (void) width; (void) height; (void) depth;
   noop_warn("glTexStorage3D");
}

static void APIENTRY noopTextureStorage1DEXT(GLuint texture, GLenum target, GLsizei levels, GLenum internalFormat, GLsizei width)
{
   (void) texture; (void) target; (void) levels; (void) internalFormat; (void) width;
   noop_warn("glTextureStorage1DEXT");
}

static void APIENTRY noopTextureStorage2DEXT(GLuint texture, GLenum target, GLsizei levels, GLenum internalFormat, GLsizei width, GLsizei height)
{
   (void) texture; (void) target; (void) levels; (void) internalFormat; (void) width; (void) height;
   noop_warn("glTextureStorage2DEXT");
}

static void APIENTRY noopTextureStorage3DEXT(GLuint texture, GLenum target, GLsizei levels, GLenum internalFormat, GLsizei width, GLsizei height, GLsizei depth)
{
   (void) texture; (void) target; (void) levels; (void) internalFormat; (void) width; (void) height; (void) depth;
   noop_warn("glTextureStorage3DEXT");
}

static void APIENTRY noopInvalidateBufferData(GLuint buffer)
{
   (void) buffer;
   noop_warn("glInvalidateBufferData");
}

static void APIENTRY noopInvalidateBufferSubData(GLuint buffer, GLintptr offset, GLsizeiptr length)
{
   (void) buffer; (void) offset; (void) length;
   noop_warn("glInvalidateBufferSubData");
}

static void APIENTRY noopInvalidateFramebuffer(GLenum target, GLsizei numAttachments, const GLenum *attachments)
{
   (void) target; (void) numAttachments; (void) attachments;
   noop_warn("glInvalidateFramebuffer");
}

static void APIENTRY noopInvalidateSubFramebuffer(GLenum target, GLsizei numAttachments, const GLenum *attachments, GLint x, GLint y, GLsizei width, GLsizei height)
{
   (void) target; (void) numAttachments; (void) attachments; (void) x; (void) y; (void) width; (void) height;
   noop_warn("glInvalidateSubFramebuffer");
}

static void APIENTRY noopInvalidateTexImage(GLuint texture, GLint level)
{
   (void) texture; (void) level;
   noop_warn("glInvalidateTexImage");
}

static void APIENTRY noopInvalidateTexSubImage(GLuint texture, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth)
{
   (void) texture; (void) level; (void) xoffset; (void) yoffset; (void) zoffset; (void) width; (void) height; (void) depth;
   noop_warn("glInvalidateTexSubImage");
}

static void APIENTRY noopPolygonOffsetEXT(GLfloat factor, GLfloat bias)
{
   (void) factor; (void) bias;
   noop_warn("glPolygonOffsetEXT");
}

static void APIENTRY noopDrawTexfOES(GLfloat x, GLfloat y, GLfloat z, GLfloat width, GLfloat height)
{
   (void) x; (void) y; (void) z; (void) width; (void) height;
   noop_warn("glDrawTexfOES");
}

static void APIENTRY noopDrawTexfvOES(const GLfloat *coords)
{
   (void) coords;
   noop_warn("glDrawTexfvOES");
}

static void APIENTRY noopDrawTexiOES(GLint x, GLint y, GLint z, GLint width, GLint height)
{
   (void) x; (void) y; (void) z; (void) width; (void) height;
   noop_warn("glDrawTexiOES");
}

static void APIENTRY noopDrawTexivOES(const GLint *coords)
{
   (void) coords;
   noop_warn("glDrawTexivOES");
}

static void APIENTRY noopDrawTexsOES(GLshort x, GLshort y, GLshort z, GLshort width, GLshort height)
{
   (void) x; (void) y; (void) z; (void) width; (void) height;
   noop_warn("glDrawTexsOES");
}

static void APIENTRY noopDrawTexsvOES(const GLshort *coords)
{
   (void) coords;
   noop_warn("glDrawTexsvOES");
}

static void APIENTRY noopDrawTexxOES(GLfixed x, GLfixed y, GLfixed z, GLfixed width, GLfixed height)
{
   (void) x; (void) y; (void) z; (void) width; (void) height;
   noop_warn("glDrawTexxOES");
}

static void APIENTRY noopDrawTexxvOES(const GLfixed *coords)
{
   (void) coords;
   noop_warn("glDrawTexxvOES");
}

static void APIENTRY noopPointSizePointerOES(GLenum type, GLsizei stride, const GLvoid *pointer)
{
   (void) type; (void) stride; (void) pointer;
   noop_warn("glPointSizePointerOES");
}

static GLbitfield APIENTRY noopQueryMatrixxOES(GLfixed *mantissa, GLint *exponent)
{
   (void) mantissa; (void) exponent;
   noop_warn("glQueryMatrixxOES");
   return (GLbitfield) 0;
}

static void APIENTRY noopSampleMaskSGIS(GLclampf value, GLboolean invert)
{
   (void) value; (void) invert;
   noop_warn("glSampleMaskSGIS");
}

static void APIENTRY noopSamplePatternSGIS(GLenum pattern)
{
   (void) pattern;
   noop_warn("glSamplePatternSGIS");
}

static void APIENTRY noopColorPointerEXT(GLint size, GLenum type, GLsizei stride, GLsizei count, const GLvoid *pointer)
{
   (void) size; (void) type; (void) stride; (void) count; (void) pointer;
   noop_warn("glColorPointerEXT");
}

static void APIENTRY noopEdgeFlagPointerEXT(GLsizei stride, GLsizei count, const GLboolean *pointer)
{
   (void) stride; (void) count; (void) pointer;
   noop_warn("glEdgeFlagPointerEXT");
}

static void APIENTRY noopIndexPointerEXT(GLenum type, GLsizei stride, GLsizei count, const GLvoid *pointer)
{
   (void) type; (void) stride; (void) count; (void) pointer;
   noop_warn("glIndexPointerEXT");
}

static void APIENTRY noopNormalPointerEXT(GLenum type, GLsizei stride, GLsizei count, const GLvoid *pointer)
{
   (void) type; (void) stride; (void) count; (void) pointer;
   noop_warn("glNormalPointerEXT");
}

static void APIENTRY noopTexCoordPointerEXT(GLint size, GLenum type, GLsizei stride, GLsizei count, const GLvoid *pointer)
{
   (void) size; (void) type; (void) stride; (void) count; (void) pointer;
   noop_warn("glTexCoordPointerEXT");
}

static void APIENTRY noopVertexPointerEXT(GLint size, GLenum type, GLsizei stride, GLsizei count, const GLvoid *pointer)
{
   (void) size; (void) type; (void) stride; (void) count; (void) pointer;
   noop_warn("glVertexPointerEXT");
}

static void APIENTRY noopPointParameterfEXT(GLenum pname, GLfloat param)
{
   (void) pname; (void) param;
   noop_warn("glPointParameterfEXT");
}

static void APIENTRY noopPointParameterfvEXT(GLenum pname, const GLfloat *params)
{
   (void) pname; (void) params;
   noop_warn("glPointParameterfvEXT");
}

static void APIENTRY noopLockArraysEXT(GLint first, GLsizei count)
{
   (void) first; (void) count;
   noop_warn("glLockArraysEXT");
}

static void APIENTRY noopUnlockArraysEXT(void)
{
      noop_warn("glUnlockArraysEXT");
}

static void APIENTRY noopSecondaryColor3bEXT(GLbyte red, GLbyte green, GLbyte blue)
{
   (void) red; (void) green; (void) blue;
   noop_warn("glSecondaryColor3bEXT");
}

static void APIENTRY noopSecondaryColor3bvEXT(const GLbyte *v)
{
   (void) v;
   noop_warn("glSecondaryColor3bvEXT");
}

static void APIENTRY noopSecondaryColor3dEXT(GLdouble red, GLdouble green, GLdouble blue)
{
   (void) red; (void) green; (void) blue;
   noop_warn("glSecondaryColor3dEXT");
}

static void APIENTRY noopSecondaryColor3dvEXT(const GLdouble *v)
{
   (void) v;
   noop_warn("glSecondaryColor3dvEXT");
}

static void APIENTRY noopSecondaryColor3fEXT(GLfloat red, GLfloat green, GLfloat blue)
{
   (void) red; (void) green; (void) blue;
   noop_warn("glSecondaryColor3fEXT");
}

static void APIENTRY noopSecondaryColor3fvEXT(const GLfloat *v)
{
   (void) v;
   noop_warn("glSecondaryColor3fvEXT");
}

static void APIENTRY noopSecondaryColor3iEXT(GLint red, GLint green, GLint blue)
{
   (void) red; (void) green; (void) blue;
   noop_warn("glSecondaryColor3iEXT");
}

static void APIENTRY noopSecondaryColor3ivEXT(const GLint *v)
{
   (void) v;
   noop_warn("glSecondaryColor3ivEXT");
}

static void APIENTRY noopSecondaryColor3sEXT(GLshort red, GLshort green, GLshort blue)
{
   (void) red; (void) green; (void) blue;
   noop_warn("glSecondaryColor3sEXT");
}

static void APIENTRY noopSecondaryColor3svEXT(const GLshort *v)
{
   (void) v;
   noop_warn("glSecondaryColor3svEXT");
}

static void APIENTRY noopSecondaryColor3ubEXT(GLubyte red, GLubyte green, GLubyte blue)
{
   (void) red; (void) green; (void) blue;
   noop_warn("glSecondaryColor3ubEXT");
}

static void APIENTRY noopSecondaryColor3ubvEXT(const GLubyte *v)
{
   (void) v;
   noop_warn("glSecondaryColor3ubvEXT");
}

static void APIENTRY noopSecondaryColor3uiEXT(GLuint red, GLuint green, GLuint blue)
{
   (void) red; (void) green; (void) blue;
   noop_warn("glSecondaryColor3uiEXT");
}

static void APIENTRY noopSecondaryColor3uivEXT(const GLuint *v)
{
   (void) v;
   noop_warn("glSecondaryColor3uivEXT");
}

static void APIENTRY noopSecondaryColor3usEXT(GLushort red, GLushort green, GLushort blue)
{
   (void) red; (void) green; (void) blue;
   noop_warn("glSecondaryColor3usEXT");
}

static void APIENTRY noopSecondaryColor3usvEXT(const GLushort *v)
{
   (void) v;
   noop_warn("glSecondaryColor3usvEXT");
}

static void APIENTRY noopSecondaryColorPointerEXT(GLint size, GLenum type, GLsizei stride, const GLvoid *pointer)
{
   (void) size; (void) type; (void) stride; (void) pointer;
   noop_warn("glSecondaryColorPointerEXT");
}

static void APIENTRY noopMultiDrawArraysEXT(GLenum mode, const GLint *first, const GLsizei *count, GLsizei primcount)
{
   (void) mode; (void) first; (void) count; (void) primcount;
   noop_warn("glMultiDrawArraysEXT");
}

static void APIENTRY noopMultiDrawElementsEXT(GLenum mode, const GLsizei *count, GLenum type, const GLvoid **indices, GLsizei primcount)
{
   (void) mode; (void) count; (void) type; (void) indices; (void) primcount;
   noop_warn("glMultiDrawElementsEXT");
}

static void APIENTRY noopFogCoordPointerEXT(GLenum type, GLsizei stride, const GLvoid *pointer)
{
   (void) type; (void) stride; (void) pointer;
   noop_warn("glFogCoordPointerEXT");
}

static void APIENTRY noopFogCoorddEXT(GLdouble coord)
{
   (void) coord;
   noop_warn("glFogCoorddEXT");
}

static void APIENTRY noopFogCoorddvEXT(const GLdouble *coord)
{
   (void) coord;
   noop_warn("glFogCoorddvEXT");
}

static void APIENTRY noopFogCoordfEXT(GLfloat coord)
{
   (void) coord;
   noop_warn("glFogCoordfEXT");
}

static void APIENTRY noopFogCoordfvEXT(const GLfloat *coord)
{
   (void) coord;
   noop_warn("glFogCoordfvEXT");
}

static void APIENTRY noopBlendFuncSeparateEXT(GLenum sfactorRGB, GLenum dfactorRGB, GLenum sfactorAlpha, GLenum dfactorAlpha)
{
   (void) sfactorRGB; (void) dfactorRGB; (void) sfactorAlpha; (void) dfactorAlpha;
   noop_warn("glBlendFuncSeparateEXT");
}

static void APIENTRY noopResizeBuffersMESA(void)
{
      noop_warn("glResizeBuffersMESA");
}

static void APIENTRY noopWindowPos2dMESA(GLdouble x, GLdouble y)
{
   (void) x; (void) y;
   noop_warn("glWindowPos2dMESA");
}

static void APIENTRY noopWindowPos2dvMESA(const GLdouble *v)
{
   (void) v;
   noop_warn("glWindowPos2dvMESA");
}

static void APIENTRY noopWindowPos2fMESA(GLfloat x, GLfloat y)
{
   (void) x; (void) y;
   noop_warn("glWindowPos2fMESA");
}

static void APIENTRY noopWindowPos2fvMESA(const GLfloat *v)
{
   (void) v;
   noop_warn("glWindowPos2fvMESA");
}

static void APIENTRY noopWindowPos2iMESA(GLint x, GLint y)
{
   (void) x; (void) y;
   noop_warn("glWindowPos2iMESA");
}

static void APIENTRY noopWindowPos2ivMESA(const GLint *v)
{
   (void) v;
   noop_warn("glWindowPos2ivMESA");
}

static void APIENTRY noopWindowPos2sMESA(GLshort x, GLshort y)
{
   (void) x; (void) y;
   noop_warn("glWindowPos2sMESA");
}

static void APIENTRY noopWindowPos2svMESA(const GLshort *v)
{
   (void) v;
   noop_warn("glWindowPos2svMESA");
}

static void APIENTRY noopWindowPos3dMESA(GLdouble x, GLdouble y, GLdouble z)
{
   (void) x; (void) y; (void) z;
   noop_warn("glWindowPos3dMESA");
}

static void APIENTRY noopWindowPos3dvMESA(const GLdouble *v)
{
   (void) v;
   noop_warn("glWindowPos3dvMESA");
}

static void APIENTRY noopWindowPos3fMESA(GLfloat x, GLfloat y, GLfloat z)
{
   (void) x; (void) y; (void) z;
   noop_warn("glWindowPos3fMESA");
}

static void APIENTRY noopWindowPos3fvMESA(const GLfloat *v)
{
   (void) v;
   noop_warn("glWindowPos3fvMESA");
}

static void APIENTRY noopWindowPos3iMESA(GLint x, GLint y, GLint z)
{
   (void) x; (void) y; (void) z;
   noop_warn("glWindowPos3iMESA");
}

static void APIENTRY noopWindowPos3ivMESA(const GLint *v)
{
   (void) v;
   noop_warn("glWindowPos3ivMESA");
}

static void APIENTRY noopWindowPos3sMESA(GLshort x, GLshort y, GLshort z)
{
   (void) x; (void) y; (void) z;
   noop_warn("glWindowPos3sMESA");
}

static void APIENTRY noopWindowPos3svMESA(const GLshort *v)
{
   (void) v;
   noop_warn("glWindowPos3svMESA");
}

static void APIENTRY noopWindowPos4dMESA(GLdouble x, GLdouble y, GLdouble z, GLdouble w)
{
   (void) x; (void) y; (void) z; (void) w;
   noop_warn("glWindowPos4dMESA");
}

static void APIENTRY noopWindowPos4dvMESA(const GLdouble *v)
{
   (void) v;
   noop_warn("glWindowPos4dvMESA");
}

static void APIENTRY noopWindowPos4fMESA(GLfloat x, GLfloat y, GLfloat z, GLfloat w)
{
   (void) x; (void) y; (void) z; (void) w;
   noop_warn("glWindowPos4fMESA");
}

static void APIENTRY noopWindowPos4fvMESA(const GLfloat *v)
{
   (void) v;
   noop_warn("glWindowPos4fvMESA");
}

static void APIENTRY noopWindowPos4iMESA(GLint x, GLint y, GLint z, GLint w)
{
   (void) x; (void) y; (void) z; (void) w;
   noop_warn("glWindowPos4iMESA");
}

static void APIENTRY noopWindowPos4ivMESA(const GLint *v)
{
   (void) v;
   noop_warn("glWindowPos4ivMESA");
}

static void APIENTRY noopWindowPos4sMESA(GLshort x, GLshort y, GLshort z, GLshort w)
{
   (void) x; (void) y; (void) z; (void) w;
   noop_warn("glWindowPos4sMESA");
}

static void APIENTRY noopWindowPos4svMESA(const GLshort *v)
{
   (void) v;
   noop_warn("glWindowPos4svMESA");
}

static void APIENTRY noopMultiModeDrawArraysIBM(const GLenum *mode, const GLint *first, const GLsizei *count, GLsizei primcount, GLint modestride)
{
   (void) mode; (void) first; (void) count; (void) primcount; (void) modestride;
   noop_warn("glMultiModeDrawArraysIBM");
}

static void APIENTRY noopMultiModeDrawElementsIBM(const GLenum *mode, const GLsizei *count, GLenum type, const GLvoid * const *indices, GLsizei primcount, GLint modestride)
{
   (void) mode; (void) count; (void) type; (void) indices; (void) primcount; (void) modestride;
   noop_warn("glMultiModeDrawElementsIBM");
}

static GLboolean APIENTRY noopAreProgramsResidentNV(GLsizei n, const GLuint *ids, GLboolean *residences)
{
   (void) n; (void) ids; (void) residences;
   noop_warn("glAreProgramsResidentNV");
   return (GLboolean) 0;
}

static void APIENTRY noopBindProgramNV(GLenum target, GLuint program)
{
   (void) target; (void) program;
   noop_warn("glBindProgramNV");
}

static void APIENTRY noopDeleteProgramsNV(GLsizei n, const GLuint *programs)
{
   (void) n; (void) programs;
   noop_warn("glDeleteProgramsNV");
}

static void APIENTRY noopExecuteProgramNV(GLenum target, GLuint id, const GLfloat *params)
{
   (void) target; (void) id; (void) params;
   noop_warn("glExecuteProgramNV");
}

static void APIENTRY noopGenProgramsNV(GLsizei n, GLuint *programs)
{
   (void) n; (void) programs;
   noop_warn("glGenProgramsNV");
}

static void APIENTRY noopGetProgramParameterdvNV(GLenum target, GLuint index, GLenum pname, GLdouble *params)
{
   (void) target; (void) index; (void) pname; (void) params;
   noop_warn("glGetProgramParameterdvNV");
}

static void APIENTRY noopGetProgramParameterfvNV(GLenum target, GLuint index, GLenum pname, GLfloat *params)
{
   (void) target; (void) index; (void) pname; (void) params;
   noop_warn("glGetProgramParameterfvNV");
}

static void APIENTRY noopGetProgramStringNV(GLuint id, GLenum pname, GLubyte *program)
{
   (void) id; (void) pname; (void) program;
   noop_warn("glGetProgramStringNV");
}

static void APIENTRY noopGetProgramivNV(GLuint id, GLenum pname, GLint *params)
{
   (void) id; (void) pname; (void) params;
   noop_warn("glGetProgramivNV");
}

static void APIENTRY noopGetTrackMatrixivNV(GLenum target, GLuint address, GLenum pname, GLint *params)
{
   (void) target; (void) address; (void) pname; (void) params;
   noop_warn("glGetTrackMatrixivNV");
}

static void APIENTRY noopGetVertexAttribPointervNV(GLuint index, GLenum pname, GLvoid **pointer)
{
   (void) index; (void) pname; (void) pointer;
   noop_warn("glGetVertexAttribPointervNV");
}

static void APIENTRY noopGetVertexAttribdvNV(GLuint index, GLenum pname, GLdouble *params)
{
   (void) index; (void) pname; (void) params;
   noop_warn("glGetVertexAttribdvNV");
}

static void APIENTRY noopGetVertexAttribfvNV(GLuint index, GLenum pname, GLfloat *params)
{
   (void) index; (void) pname; (void) params;
   noop_warn("glGetVertexAttribfvNV");
}

static void APIENTRY noopGetVertexAttribivNV(GLuint index, GLenum pname, GLint *params)
{
   (void) index; (void) pname; (void) params;
   noop_warn("glGetVertexAttribivNV");
}

static GLboolean APIENTRY noopIsProgramNV(GLuint program)
{
   (void) program;
   noop_warn("glIsProgramNV");
   return (GLboolean) 0;
}

static void APIENTRY noopLoadProgramNV(GLenum target, GLuint id, GLsizei len, const GLubyte *program)
{
   (void) target; (void) id; (void) len; (void) program;
   noop_warn("glLoadProgramNV");
}

static void APIENTRY noopProgramParameters4dvNV(GLenum target, GLuint index, GLsizei num, const GLdouble *params)
{
   (void) target; (void) index; (void) num; (void) params;
   noop_warn("glProgramParameters4dvNV");
}

static void APIENTRY noopProgramParameters4fvNV(GLenum target, GLuint index, GLsizei num, const GLfloat *params)
{
   (void) target; (void) index; (void) num; (void) params;
   noop_warn("glProgramParameters4fvNV");
}

static void APIENTRY noopRequestResidentProgramsNV(GLsizei n, const GLuint *ids)
{
   (void) n; (void) ids;
   noop_warn("glRequestResidentProgramsNV");
}

static void APIENTRY noopTrackMatrixNV(GLenum target, GLuint address, GLenum matrix, GLenum transform)
{
   (void) target; (void) address; (void) matrix; (void) transform;
   noop_warn("glTrackMatrixNV");
}

static void APIENTRY noopVertexAttrib1dNV(GLuint index, GLdouble x)
{
   (void) index; (void) x;
   noop_warn("glVertexAttrib1dNV");
}

static void APIENTRY noopVertexAttrib1dvNV(GLuint index, const GLdouble *v)
{
   (void) index; (void) v;
   noop_warn("glVertexAttrib1dvNV");
}

static void APIENTRY noopVertexAttrib1fNV(GLuint index, GLfloat x)
{
   (void) index; (void) x;
   noop_warn("glVertexAttrib1fNV");
}

static void APIENTRY noopVertexAttrib1fvNV(GLuint index, const GLfloat *v)
{
   (void) index; (void) v;
   noop_warn("glVertexAttrib1fvNV");
}

static void APIENTRY noopVertexAttrib1sNV(GLuint index, GLshort x)
{
   (void) index; (void) x;
   noop_warn("glVertexAttrib1sNV");
}

static void APIENTRY noopVertexAttrib1svNV(GLuint index, const GLshort *v)
{
   (void) index; (void) v;
   noop_warn("glVertexAttrib1svNV");
}

static void APIENTRY noopVertexAttrib2dNV(GLuint index, GLdouble x, GLdouble y)
{
   (void) index; (void) x; (void) y;
   noop_warn("glVertexAttrib2dNV");
}

static void APIENTRY noopVertexAttrib2dvNV(GLuint index, const GLdouble *v)
{
   (void) index; (void) v;
   noop_warn("glVertexAttrib2dvNV");
}

static void APIENTRY noopVertexAttrib2fNV(GLuint index, GLfloat x, GLfloat y)
{
   (void) index; (void) x; (void) y;
   noop_warn("glVertexAttrib2fNV");
}

static void APIENTRY noopVertexAttrib2fvNV(GLuint index, const GLfloat *v)
{
   (void) index; (void) v;
   noop_warn("glVertexAttrib2fvNV");
}

static void APIENTRY noopVertexAttrib2sNV(GLuint index, GLshort x, GLshort y)
{
   (void) index; (void) x; (void) y;
   noop_warn("glVertexAttrib2sNV");
}

static void APIENTRY noopVertexAttrib2svNV(GLuint index, const GLshort *v)
{
   (void) index; (void) v;
   noop_warn("glVertexAttrib2svNV");
}

static void APIENTRY noopVertexAttrib3dNV(GLuint index, GLdouble x, GLdouble y, GLdouble z)
{
   (void) index; (void) x; (void) y; (void) z;
   noop_warn("glVertexAttrib3dNV");
}

static void APIENTRY noopVertexAttrib3dvNV(GLuint index, const GLdouble *v)
{
   (void) index; (void) v;
   noop_warn("glVertexAttrib3dvNV");
}

static void APIENTRY noopVertexAttrib3fNV(GLuint index, GLfloat x, GLfloat y, GLfloat z)
{
   (void) index; (void) x; (void) y; (void) z;
   noop_warn("glVertexAttrib3fNV");
}

static void APIENTRY noopVertexAttrib3fvNV(GLuint index, const GLfloat *v)
{
   (void) index; (void) v;
   noop_warn("glVertexAttrib3fvNV");
}

static void APIENTRY noopVertexAttrib3sNV(GLuint index, GLshort x, GLshort y, GLshort z)
{
   (void) index; (void) x; (void) y; (void) z;
   noop_warn("glVertexAttrib3sNV");
}

static void APIENTRY noopVertexAttrib3svNV(GLuint index, const GLshort *v)
{
   (void) index; (void) v;
   noop_warn("glVertexAttrib3svNV");
}

static void APIENTRY noopVertexAttrib4dNV(GLuint index, GLdouble x, GLdouble y, GLdouble z, GLdouble w)
{
   (void) index; (void) x; (void) y; (void) z; (void) w;
   noop_warn("glVertexAttrib4dNV");
}

static void APIENTRY noopVertexAttrib4dvNV(GLuint index, const GLdouble *v)
{
   (void) index; (void) v;
   noop_warn("glVertexAttrib4dvNV");
}

static void APIENTRY noopVertexAttrib4fNV(GLuint index, GLfloat x, GLfloat y, GLfloat z, GLfloat w)
{
   (void) index; (void) x; (void) y; (void) z; (void) w;
   noop_warn("glVertexAttrib4fNV");
}

static void APIENTRY noopVertexAttrib4fvNV(GLuint index, const GLfloat *v)
{
   (void) index; (void) v;
   noop_warn("glVertexAttrib4fvNV");
}

static void APIENTRY noopVertexAttrib4sNV(GLuint index, GLshort x, GLshort y, GLshort z, GLshort w)
{
   (void) index; (void) x; (void) y; (void) z; (void) w;
   noop_warn("glVertexAttrib4sNV");
}

static void APIENTRY noopVertexAttrib4svNV(GLuint index, const GLshort *v)
{
   (void) index; (void) v;
   noop_warn("glVertexAttrib4svNV");
}

static void APIENTRY noopVertexAttrib4ubNV(GLuint index, GLubyte x, GLubyte y, GLubyte z, GLubyte w)
{
   (void) index; (void) x; (void) y; (void) z; (void) w;
   noop_warn("glVertexAttrib4ubNV");
}

static void APIENTRY noopVertexAttrib4ubvNV(GLuint index, const GLubyte *v)
{
   (void) index; (void) v;
   noop_warn("glVertexAttrib4ubvNV");
}

static void APIENTRY noopVertexAttribPointerNV(GLuint index, GLint size, GLenum type, GLsizei stride, const GLvoid *pointer)
{
   (void) index; (void) size; (void) type; (void) stride; (void) pointer;
   noop_warn("glVertexAttribPointerNV");
}

static void APIENTRY noopVertexAttribs1dvNV(GLuint index, GLsizei n, const GLdouble *v)
{
   (void) index; (void) n; (void) v;
   noop_warn("glVertexAttribs1dvNV");
}

static void APIENTRY noopVertexAttribs1fvNV(GLuint index, GLsizei n, const GLfloat *v)
{
   (void) index; (void) n; (void) v;
   noop_warn("glVertexAttribs1fvNV");
}

static void APIENTRY noopVertexAttribs1svNV(GLuint index, GLsizei n, const GLshort *v)
{
   (void) index; (void) n; (void) v;
   noop_warn("glVertexAttribs1svNV");
}

static void APIENTRY noopVertexAttribs2dvNV(GLuint index, GLsizei n, const GLdouble *v)
{
   (void) index; (void) n; (void) v;
   noop_warn("glVertexAttribs2dvNV");
}

static void APIENTRY noopVertexAttribs2fvNV(GLuint index, GLsizei n, const GLfloat *v)
{
   (void) index; (void) n; (void) v;
   noop_warn("glVertexAttribs2fvNV");
}

static void APIENTRY noopVertexAttribs2svNV(GLuint index, GLsizei n, const GLshort *v)
{
   (void) index; (void) n; (void) v;
   noop_warn("glVertexAttribs2svNV");
}

static void APIENTRY noopVertexAttribs3dvNV(GLuint index, GLsizei n, const GLdouble *v)
{
   (void) index; (void) n; (void) v;
   noop_warn("glVertexAttribs3dvNV");
}

static void APIENTRY noopVertexAttribs3fvNV(GLuint index, GLsizei n, const GLfloat *v)
{
   (void) index; (void) n; (void) v;
   noop_warn("glVertexAttribs3fvNV");
}

static void APIENTRY noopVertexAttribs3svNV(GLuint index, GLsizei n, const GLshort *v)
{
   (void) index; (void) n; (void) v;
   noop_warn("glVertexAttribs3svNV");
}

static void APIENTRY noopVertexAttribs4dvNV(GLuint index, GLsizei n, const GLdouble *v)
{
   (void) index; (void) n; (void) v;
   noop_warn("glVertexAttribs4dvNV");
}

static void APIENTRY noopVertexAttribs4fvNV(GLuint index, GLsizei n, const GLfloat *v)
{
   (void) index; (void) n; (void) v;
   noop_warn("glVertexAttribs4fvNV");
}

static void APIENTRY noopVertexAttribs4svNV(GLuint index, GLsizei n, const GLshort *v)
{
   (void) index; (void) n; (void) v;
   noop_warn("glVertexAttribs4svNV");
}

static void APIENTRY noopVertexAttribs4ubvNV(GLuint index, GLsizei n, const GLubyte *v)
{
   (void) index; (void) n; (void) v;
   noop_warn("glVertexAttribs4ubvNV");
}

static void APIENTRY noopGetTexBumpParameterfvATI(GLenum pname, GLfloat *param)
{
   (void) pname; (void) param;
   noop_warn("glGetTexBumpParameterfvATI");
}

static void APIENTRY noopGetTexBumpParameterivATI(GLenum pname, GLint *param)
{
   (void) pname; (void) param;
   noop_warn("glGetTexBumpParameterivATI");
}

static void APIENTRY noopTexBumpParameterfvATI(GLenum pname, const GLfloat *param)
{
   (void) pname; (void) param;
   noop_warn("glTexBumpParameterfvATI");
}

static void APIENTRY noopTexBumpParameterivATI(GLenum pname, const GLint *param)
{
   (void) pname; (void) param;
   noop_warn("glTexBumpParameterivATI");
}

static void APIENTRY noopAlphaFragmentOp1ATI(GLenum op, GLuint dst, GLuint dstMod, GLuint arg1, GLuint arg1Rep, GLuint arg1Mod)
{
   (void) op; (void) dst; (void) dstMod; (void) arg1; (void) arg1Rep; (void) arg1Mod;
   noop_warn("glAlphaFragmentOp1ATI");
}

static void APIENTRY noopAlphaFragmentOp2ATI(GLenum op, GLuint dst, GLuint dstMod, GLuint arg1, GLuint arg1Rep, GLuint arg1Mod, GLuint arg2, GLuint arg2Rep, GLuint arg2Mod)
{
   (void) op; (void) dst; (void) dstMod; (void) arg1; (void) arg1Rep; (void) arg1Mod; (void) arg2; (void) arg2Rep; (void) arg2Mod;
   noop_warn("glAlphaFragmentOp2ATI");
}

static void APIENTRY noopAlphaFragmentOp3ATI(GLenum op, GLuint dst, GLuint dstMod, GLuint arg1, GLuint arg1Rep, GLuint arg1Mod, GLuint arg2, GLuint arg2Rep, GLuint arg2Mod, GLuint arg3, GLuint arg3Rep, GLuint arg3Mod)
{
   (void) op; (void) dst; (void) dstMod; (void) arg1; (void) arg1Rep; (void) arg1Mod; (void) arg2; (void) arg2Rep; (void) arg2Mod; (void) arg3; (void) arg3Rep; (void) arg3Mod;
   noop_warn("glAlphaFragmentOp3ATI");
}

static void APIENTRY noopBeginFragmentShaderATI(void)
{
      noop_warn("glBeginFragmentShaderATI");
}

static void APIENTRY noopBindFragmentShaderATI(GLuint id)
{
   (void) id;
   noop_warn("glBindFragmentShaderATI");
}

static void APIENTRY noopColorFragmentOp1ATI(GLenum op, GLuint dst, GLuint dstMask, GLuint dstMod, GLuint arg1, GLuint arg1Rep, GLuint arg1Mod)
{
   (void) op; (void) dst; (void) dstMask; (void) dstMod; (void) arg1; (void) arg1Rep; (void) arg1Mod;
   noop_warn("glColorFragmentOp1ATI");
}

static void APIENTRY noopColorFragmentOp2ATI(GLenum op, GLuint dst, GLuint dstMask, GLuint dstMod, GLuint arg1, GLuint arg1Rep, GLuint arg1Mod, GLuint arg2, GLuint arg2Rep, GLuint arg2Mod)
{
   (void) op; (void) dst; (void) dstMask; (void) dstMod; (void) arg1; (void) arg1Rep; (void) arg1Mod; (void) arg2; (void) arg2Rep; (void) arg2Mod;
   noop_warn("glColorFragmentOp2ATI");
}

static void APIENTRY noopColorFragmentOp3ATI(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)
{
   (void) op; (void) dst; (void) dstMask; (void) dstMod; (void) arg1; (void) arg1Rep; (void) arg1Mod; (void) arg2; (void) arg2Rep; (void) arg2Mod; (void) arg3; (void) arg3Rep; (void) arg3Mod;
   noop_warn("glColorFragmentOp3ATI");
}

static void APIENTRY noopDeleteFragmentShaderATI(GLuint id)
{
   (void) id;
   noop_warn("glDeleteFragmentShaderATI");
}

static void APIENTRY noopEndFragmentShaderATI(void)
{
      noop_warn("glEndFragmentShaderATI");
}

static GLuint APIENTRY noopGenFragmentShadersATI(GLuint range)
{
   (void) range;
   noop_warn("glGenFragmentShadersATI");
   return (GLuint) 0;
}

static void APIENTRY noopPassTexCoordATI(GLuint dst, GLuint coord, GLenum swizzle)
{
   (void) dst; (void) coord; (void) swizzle;
   noop_warn("glPassTexCoordATI");
}

static void APIENTRY noopSampleMapATI(GLuint dst, GLuint interp, GLenum swizzle)
{
   (void) dst; (void) interp; (void) swizzle;
   noop_warn("glSampleMapATI");
}

static void APIENTRY noopSetFragmentShaderConstantATI(GLuint dst, const GLfloat *value)
{
   (void) dst; (void) value;
   noop_warn("glSetFragmentShaderConstantATI");
}

static void APIENTRY noopPointParameteriNV(GLenum pname, GLint param)
{
   (void) pname; (void) param;
   noop_warn("glPointParameteriNV");
}

static void APIENTRY noopPointParameterivNV(GLenum pname, const GLint *params)
{
   (void) pname; (void) params;
   noop_warn("glPointParameterivNV");
}

static void APIENTRY noopActiveStencilFaceEXT(GLenum face)
{
   (void) face;
   noop_warn("glActiveStencilFaceEXT");
}

static void APIENTRY noopBindVertexArrayAPPLE(GLuint array)
{
   (void) array;
   noop_warn("glBindVertexArrayAPPLE");
}

static void APIENTRY noopDeleteVertexArraysAPPLE(GLsizei n, const GLuint *arrays)
{
   (void) n; (void) arrays;
   noop_warn("glDeleteVertexArraysAPPLE");
}

static void APIENTRY noopGenVertexArraysAPPLE(GLsizei n, GLuint *arrays)
{
   (void) n; (void) arrays;
   noop_warn("glGenVertexArraysAPPLE");
}

static GLboolean APIENTRY noopIsVertexArrayAPPLE(GLuint array)
{
   (void) array;
   noop_warn("glIsVertexArrayAPPLE");
   return (GLboolean) 0;
}

static void APIENTRY noopGetProgramNamedParameterdvNV(GLuint id, GLsizei len, const GLubyte *name, GLdouble *params)
{
   (void) id; (void) len; (void) name; (void) params;
   noop_warn("glGetProgramNamedParameterdvNV");
}

static void APIENTRY noopGetProgramNamedParameterfvNV(GLuint id, GLsizei len, const GLubyte *name, GLfloat *params)
{
   (void) id; (void) len; (void) name; (void) params;
   noop_warn("glGetProgramNamedParameterfvNV");
}

static void APIENTRY noopProgramNamedParameter4dNV(GLuint id, GLsizei len, const GLubyte *name, GLdouble x, GLdouble y, GLdouble z, GLdouble w)
{
   (void) id; (void) len; (void) name; (void) x; (void) y; (void) z; (void) w;
   noop_warn("glProgramNamedParameter4dNV");
}

static void APIENTRY noopProgramNamedParameter4dvNV(GLuint id, GLsizei len, const GLubyte *name, const GLdouble *v)
{
   (void) id; (void) len; (void) name; (void) v;
   noop_warn("glProgramNamedParameter4dvNV");
}

static void APIENTRY noopProgramNamedParameter4fNV(GLuint id, GLsizei len, const GLubyte *name, GLfloat x, GLfloat y, GLfloat z, GLfloat w)
{
   (void) id; (void) len; (void) name; (void) x; (void) y; (void) z; (void) w;
   noop_warn("glProgramNamedParameter4fNV");
}

static void APIENTRY noopProgramNamedParameter4fvNV(GLuint id, GLsizei len, const GLubyte *name, const GLfloat *v)
{
   (void) id; (void) len; (void) name; (void) v;
   noop_warn("glProgramNamedParameter4fvNV");
}

static void APIENTRY noopPrimitiveRestartIndexNV(GLuint index)
{
   (void) index;
   noop_warn("glPrimitiveRestartIndexNV");
}

static void APIENTRY noopPrimitiveRestartNV(void)
{
      noop_warn("glPrimitiveRestartNV");
}

static void APIENTRY noopAlphaFuncxOES(GLenum func, GLclampx ref)
{
   (void) func; (void) ref;
   noop_warn("glAlphaFuncxOES");
}

static void APIENTRY noopClearColorxOES(GLclampx red, GLclampx green, GLclampx blue, GLclampx alpha)
{
   (void) red; (void) green; (void) blue; (void) alpha;
   noop_warn("glClearColorxOES");
}

static void APIENTRY noopClearDepthxOES(GLclampx depth)
{
   (void) depth;
   noop_warn("glClearDepthxOES");
}

static void APIENTRY noopClipPlanexOES(GLenum plane, const GLfixed *equation)
{
   (void) plane; (void) equation;
   noop_warn("glClipPlanexOES");
}

static void APIENTRY noopColor4xOES(GLfixed red, GLfixed green, GLfixed blue, GLfixed alpha)
{
   (void) red; (void) green; (void) blue; (void) alpha;
   noop_warn("glColor4xOES");
}

static void APIENTRY noopDepthRangexOES(GLclampx zNear, GLclampx zFar)
{
   (void) zNear; (void) zFar;
   noop_warn("glDepthRangexOES");
}

static void APIENTRY noopFogxOES(GLenum pname, GLfixed param)
{
   (void) pname; (void) param;
   noop_warn("glFogxOES");
}

static void APIENTRY noopFogxvOES(GLenum pname, const GLfixed *params)
{
   (void) pname; (void) params;
   noop_warn("glFogxvOES");
}

static void APIENTRY noopFrustumxOES(GLfixed left, GLfixed right, GLfixed bottom, GLfixed top, GLfixed zNear, GLfixed zFar)
{
   (void) left; (void) right; (void) bottom; (void) top; (void) zNear; (void) zFar;
   noop_warn("glFrustumxOES");
}

static void APIENTRY noopGetClipPlanexOES(GLenum plane, GLfixed *equation)
{
   (void) plane; (void) equation;
   noop_warn("glGetClipPlanexOES");
}

static void APIENTRY noopGetFixedvOES(GLenum pname, GLfixed *params)
{
   (void) pname; (void) params;
   noop_warn("glGetFixedvOES");
}

static void APIENTRY noopGetLightxvOES(GLenum light, GLenum pname, GLfixed *params)
{
   (void) light; (void) pname; (void) params;
   noop_warn("glGetLightxvOES");
}

static void APIENTRY noopGetMaterialxvOES(GLenum face, GLenum pname, GLfixed *params)
{
   (void) face; (void) pname; (void) params;
   noop_warn("glGetMaterialxvOES");
}

static void APIENTRY noopGetTexEnvxvOES(GLenum target, GLenum pname, GLfixed *params)
{
   (void) target; (void) pname; (void) params;
   noop_warn("glGetTexEnvxvOES");
}

static void APIENTRY noopGetTexGenxvOES(GLenum coord, GLenum pname, GLfixed *params)
{
   (void) coord; (void) pname; (void) params;
   noop_warn("glGetTexGenxvOES");
}

static void APIENTRY noopGetTexParameterxvOES(GLenum target, GLenum pname, GLfixed *params)
{
   (void) target; (void) pname; (void) params;
   noop_warn("glGetTexParameterxvOES");
}

static void APIENTRY noopLightModelxOES(GLenum pname, GLfixed param)
{
   (void) pname; (void) param;
   noop_warn("glLightModelxOES");
}

static void APIENTRY noopLightModelxvOES(GLenum pname, const GLfixed *params)
{
   (void) pname; (void) params;
   noop_warn("glLightModelxvOES");
}

static void APIENTRY noopLightxOES(GLenum light, GLenum pname, GLfixed param)
{
   (void) light; (void) pname; (void) param;
   noop_warn("glLightxOES");
}

static void APIENTRY noopLightxvOES(GLenum light, GLenum pname, const GLfixed *params)
{
   (void) light; (void) pname; (void) params;
   noop_warn("glLightxvOES");
}

static void APIENTRY noopLineWidthxOES(GLfixed width)
{
   (void) width;
   noop_warn("glLineWidthxOES");
}

static void APIENTRY noopLoadMatrixxOES(const GLfixed *m)
{
   (void) m;
   noop_warn("glLoadMatrixxOES");
}

static void APIENTRY noopMaterialxOES(GLenum face, GLenum pname, GLfixed param)
{
   (void) face; (void) pname; (void) param;
   noop_warn("glMaterialxOES");
}

static void APIENTRY noopMaterialxvOES(GLenum face, GLenum pname, const GLfixed *params)
{
   (void) face; (void) pname; (void) params;
   noop_warn("glMaterialxvOES");
}

static void APIENTRY noopMultMatrixxOES(const GLfixed *m)
{
   (void) m;
   noop_warn("glMultMatrixxOES");
}

static void APIENTRY noopMultiTexCoord4xOES(GLenum target, GLfixed s, GLfixed t, GLfixed r, GLfixed q)
{
   (void) target; (void) s; (void) t; (void) r; (void) q;
   noop_warn("glMultiTexCoord4xOES");
}

static void APIENTRY noopNormal3xOES(GLfixed nx, GLfixed ny, GLfixed nz)
{
   (void) nx; (void) ny; (void) nz;
   noop_warn("glNormal3xOES");
}

static void APIENTRY noopOrthoxOES(GLfixed left, GLfixed right, GLfixed bottom, GLfixed top, GLfixed zNear, GLfixed zFar)
{
   (void) left; (void) right; (void) bottom; (void) top; (void) zNear; (void) zFar;
   noop_warn("glOrthoxOES");
}

static void APIENTRY noopPointParameterxOES(GLenum pname, GLfixed param)
{
   (void) pname; (void) param;
   noop_warn("glPointParameterxOES");
}

static void APIENTRY noopPointParameterxvOES(GLenum pname, const GLfixed *params)
{
   (void) pname; (void) params;
   noop_warn("glPointParameterxvOES");
}

static void APIENTRY noopPointSizexOES(GLfixed size)
{
   (void) size;
   noop_warn("glPointSizexOES");
}

static void APIENTRY noopPolygonOffsetxOES(GLfixed factor, GLfixed units)
{
   (void) factor; (void) units;
   noop_warn("glPolygonOffsetxOES");
}

static void APIENTRY noopRotatexOES(GLfixed angle, GLfixed x, GLfixed y, GLfixed z)
{
   (void) angle; (void) x; (void) y; (void) z;
   noop_warn("glRotatexOES");
}

static void APIENTRY noopSampleCoveragexOES(GLclampx value, GLboolean invert)
{
   (void) value; (void) invert;
   noop_warn("glSampleCoveragexOES");
}

static void APIENTRY noopScalexOES(GLfixed x, GLfixed y, GLfixed z)
{
   (void) x; (void) y; (void) z;
   noop_warn("glScalexOES");
}

static void APIENTRY noopTexEnvxOES(GLenum target, GLenum pname, GLfixed param)
{
   (void) target; (void) pname; (void) param;
   noop_warn("glTexEnvxOES");
}

static void APIENTRY noopTexEnvxvOES(GLenum target, GLenum pname, const GLfixed *params)
{
   (void) target; (void) pname; (void) params;
   noop_warn("glTexEnvxvOES");
}

static void APIENTRY noopTexGenxOES(GLenum coord, GLenum pname, GLint param)
{
   (void) coord; (void) pname; (void) param;
   noop_warn("glTexGenxOES");
}

static void APIENTRY noopTexGenxvOES(GLenum coord, GLenum pname, const GLfixed *params)
{
   (void) coord; (void) pname; (void) params;
   noop_warn("glTexGenxvOES");
}

static void APIENTRY noopTexParameterxOES(GLenum target, GLenum pname, GLfixed param)
{
   (void) target; (void) pname; (void) param;
   noop_warn("glTexParameterxOES");
}

static void APIENTRY noopTexParameterxvOES(GLenum target, GLenum pname, const GLfixed *params)
{
   (void) target; (void) pname; (void) params;
   noop_warn("glTexParameterxvOES");
}

static void APIENTRY noopTranslatexOES(GLfixed x, GLfixed y, GLfixed z)
{
   (void) x; (void) y; (void) z;
   noop_warn("glTranslatexOES");
}

static void APIENTRY noopClipPlanefOES(GLenum plane, const GLfloat *equation)
{
   (void) plane; (void) equation;
   noop_warn("glClipPlanefOES");
}

static void APIENTRY noopFrustumfOES(GLfloat left, GLfloat right, GLfloat bottom, GLfloat top, GLfloat zNear, GLfloat zFar)
{
   (void) left; (void) right; (void) bottom; (void) top; (void) zNear; (void) zFar;
   noop_warn("glFrustumfOES");
}

static void APIENTRY noopGetClipPlanefOES(GLenum plane, GLfloat *equation)
{
   (void) plane; (void) equation;
   noop_warn("glGetClipPlanefOES");
}

static void APIENTRY noopOrthofOES(GLfloat left, GLfloat right, GLfloat bottom, GLfloat top, GLfloat zNear, GLfloat zFar)
{
   (void) left; (void) right; (void) bottom; (void) top; (void) zNear; (void) zFar;
   noop_warn("glOrthofOES");
}

static void APIENTRY noopDepthBoundsEXT(GLclampd zmin, GLclampd zmax)
{
   (void) zmin; (void) zmax;
   noop_warn("glDepthBoundsEXT");
}

static void APIENTRY noopBlendEquationSeparateEXT(GLenum modeRGB, GLenum modeA)
{
   (void) modeRGB; (void) modeA;
   noop_warn("glBlendEquationSeparateEXT");
}

static void APIENTRY noopBindFramebufferEXT(GLenum target, GLuint framebuffer)
{
   (void) target; (void) framebuffer;
   noop_warn("glBindFramebufferEXT");
}

static void APIENTRY noopBindRenderbufferEXT(GLenum target, GLuint renderbuffer)
{
   (void) target; (void) renderbuffer;
   noop_warn("glBindRenderbufferEXT");
}

static GLenum APIENTRY noopCheckFramebufferStatusEXT(GLenum target)
{
   (void) target;
   noop_warn("glCheckFramebufferStatusEXT");
   return (GLenum) 0;
}

static void APIENTRY noopDeleteFramebuffersEXT(GLsizei n, const GLuint *framebuffers)
{
   (void) n; (void) framebuffers;
   noop_warn("glDeleteFramebuffersEXT");
}

static void APIENTRY noopDeleteRenderbuffersEXT(GLsizei n, const GLuint *renderbuffers)
{
   (void) n; (void) renderbuffers;
   noop_warn("glDeleteRenderbuffersEXT");
}

static void APIENTRY noopFramebufferRenderbufferEXT(GLenum target, GLenum attachment, GLenum renderbuffertarget, GLuint renderbuffer)
{
   (void) target; (void) attachment; (void) renderbuffertarget; (void) renderbuffer;
   noop_warn("glFramebufferRenderbufferEXT");
}

static void APIENTRY noopFramebufferTexture1DEXT(GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level)
{
   (void) target; (void) attachment; (void) textarget; (void) texture; (void) level;
   noop_warn("glFramebufferTexture1DEXT");
}

static void APIENTRY noopFramebufferTexture2DEXT(GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level)
{
   (void) target; (void) attachment; (void) textarget; (void) texture; (void) level;
   noop_warn("glFramebufferTexture2DEXT");
}

static void APIENTRY noopFramebufferTexture3DEXT(GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level, GLint zoffset)
{
   (void) target; (void) attachment; (void) textarget; (void) texture; (void) level; (void) zoffset;
   noop_warn("glFramebufferTexture3DEXT");
}

static void APIENTRY noopGenFramebuffersEXT(GLsizei n, GLuint *framebuffers)
{
   (void) n; (void) framebuffers;
   noop_warn("glGenFramebuffersEXT");
}

static void APIENTRY noopGenRenderbuffersEXT(GLsizei n, GLuint *renderbuffers)
{
   (void) n; (void) renderbuffers;
   noop_warn("glGenRenderbuffersEXT");
}

static void APIENTRY noopGenerateMipmapEXT(GLenum target)
{
   (void) target;
   noop_warn("glGenerateMipmapEXT");
}

static void APIENTRY noopGetFramebufferAttachmentParameterivEXT(GLenum target, GLenum attachment, GLenum pname, GLint *params)
{
   (void) target; (void) attachment; (void) pname; (void) params;
   noop_warn("glGetFramebufferAttachmentParameterivEXT");
}

static void APIENTRY noopGetRenderbufferParameterivEXT(GLenum target, GLenum pname, GLint *params)
{
   (void) target; (void) pname; (void) params;
   noop_warn("glGetRenderbufferParameterivEXT");
}

static GLboolean APIENTRY noopIsFramebufferEXT(GLuint framebuffer)
{
   (void) framebuffer;
   noop_warn("glIsFramebufferEXT");
   return (GLboolean) 0;
}

static GLboolean APIENTRY noopIsRenderbufferEXT(GLuint renderbuffer)
{
   (void) renderbuffer;
   noop_warn("glIsRenderbufferEXT");
   return (GLboolean) 0;
}

static void APIENTRY noopRenderbufferStorageEXT(GLenum target, GLenum internalformat, GLsizei width, GLsizei height)
{
   (void) target; (void) internalformat; (void) width; (void) height;
   noop_warn("glRenderbufferStorageEXT");
}

static void APIENTRY noopBlitFramebufferEXT(GLint srcX0, GLint srcY0, GLint srcX1, GLint srcY1, GLint dstX0, GLint dstY0, GLint dstX1, GLint dstY1, GLbitfield mask, GLenum filter)
{
   (void) srcX0; (void) srcY0; (void) srcX1; (void) srcY1; (void) dstX0; (void) dstY0; (void) dstX1; (void) dstY1; (void) mask; (void) filter;
   noop_warn("glBlitFramebufferEXT");
}

static void APIENTRY noopBufferParameteriAPPLE(GLenum target, GLenum pname, GLint param)
{
   (void) target; (void) pname; (void) param;
   noop_warn("glBufferParameteriAPPLE");
}

static void APIENTRY noopFlushMappedBufferRangeAPPLE(GLenum target, GLintptr offset, GLsizeiptr size)
{
   (void) target; (void) offset; (void) size;
   noop_warn("glFlushMappedBufferRangeAPPLE");
}

static void APIENTRY noopBindFragDataLocationEXT(GLuint program, GLuint colorNumber, const GLchar *name)
{
   (void) program; (void) colorNumber; (void) name;
   noop_warn("glBindFragDataLocationEXT");
}

static GLint APIENTRY noopGetFragDataLocationEXT(GLuint program, const GLchar *name)
{
   (void) program; (void) name;
   noop_warn("glGetFragDataLocationEXT");
   return (GLint) 0;
}

static void APIENTRY noopGetUniformuivEXT(GLuint program, GLint location, GLuint *params)
{
   (void) program; (void) location; (void) params;
   noop_warn("glGetUniformuivEXT");
}

static void APIENTRY noopGetVertexAttribIivEXT(GLuint index, GLenum pname, GLint *params)
{
   (void) index; (void) pname; (void) params;
   noop_warn("glGetVertexAttribIivEXT");
}

static void APIENTRY noopGetVertexAttribIuivEXT(GLuint index, GLenum pname, GLuint *params)
{
   (void) index; (void) pname; (void) params;
   noop_warn("glGetVertexAttribIuivEXT");
}

static void APIENTRY noopUniform1uiEXT(GLint location, GLuint x)
{
   (void) location; (void) x;
   noop_warn("glUniform1uiEXT");
}

static void APIENTRY noopUniform1uivEXT(GLint location, GLsizei count, const GLuint *value)
{
   (void) location; (void) count; (void) value;
   noop_warn("glUniform1uivEXT");
}

static void APIENTRY noopUniform2uiEXT(GLint location, GLuint x, GLuint y)
{
   (void) location; (void) x; (void) y;
   noop_warn("glUniform2uiEXT");
}

static void APIENTRY noopUniform2uivEXT(GLint location, GLsizei count, const GLuint *value)
{
   (void) location; (void) count; (void) value;
   noop_warn("glUniform2uivEXT");
}

static void APIENTRY noopUniform3uiEXT(GLint location, GLuint x, GLuint y, GLuint z)
{
   (void) location; (void) x; (void) y; (void) z;
   noop_warn("glUniform3uiEXT");
}

static void APIENTRY noopUniform3uivEXT(GLint location, GLsizei count, const GLuint *value)
{
   (void) location; (void) count; (void) value;
   noop_warn("glUniform3uivEXT");
}

static void APIENTRY noopUniform4uiEXT(GLint location, GLuint x, GLuint y, GLuint z, GLuint w)
{
   (void) location; (void) x; (void) y; (void) z; (void) w;
   noop_warn("glUniform4uiEXT");
}

static void APIENTRY noopUniform4uivEXT(GLint location, GLsizei count, const GLuint *value)
{
   (void) location; (void) count; (void) value;
   noop_warn("glUniform4uivEXT");
}

static void APIENTRY noopVertexAttribI1iEXT(GLuint index, GLint x)
{
   (void) index; (void) x;
   noop_warn("glVertexAttribI1iEXT");
}

static void APIENTRY noopVertexAttribI1ivEXT(GLuint index, const GLint *v)
{
   (void) index; (void) v;
   noop_warn("glVertexAttribI1ivEXT");
}

static void APIENTRY noopVertexAttribI1uiEXT(GLuint index, GLuint x)
{
   (void) index; (void) x;
   noop_warn("glVertexAttribI1uiEXT");
}

static void APIENTRY noopVertexAttribI1uivEXT(GLuint index, const GLuint *v)
{
   (void) index; (void) v;
   noop_warn("glVertexAttribI1uivEXT");
}

static void APIENTRY noopVertexAttribI2iEXT(GLuint index, GLint x, GLint y)
{
   (void) index; (void) x; (void) y;
   noop_warn("glVertexAttribI2iEXT");
}

static void APIENTRY noopVertexAttribI2ivEXT(GLuint index, const GLint *v)
{
   (void) index; (void) v;
   noop_warn("glVertexAttribI2ivEXT");
}

static void APIENTRY noopVertexAttribI2uiEXT(GLuint index, GLuint x, GLuint y)
{
   (void) index; (void) x; (void) y;
   noop_warn("glVertexAttribI2uiEXT");
}

static void APIENTRY noopVertexAttribI2uivEXT(GLuint index, const GLuint *v)
{
   (void) index; (void) v;
   noop_warn("glVertexAttribI2uivEXT");
}

static void APIENTRY noopVertexAttribI3iEXT(GLuint index, GLint x, GLint y, GLint z)
{
   (void) index; (void) x; (void) y; (void) z;
   noop_warn("glVertexAttribI3iEXT");
}

static void APIENTRY noopVertexAttribI3ivEXT(GLuint index, const GLint *v)
{
   (void) index; (void) v;
   noop_warn("glVertexAttribI3ivEXT");
}

static void APIENTRY noopVertexAttribI3uiEXT(GLuint index, GLuint x, GLuint y, GLuint z)
{
   (void) index; (void) x; (void) y; (void) z;
   noop_warn("glVertexAttribI3uiEXT");
}

static void APIENTRY noopVertexAttribI3uivEXT(GLuint index, const GLuint *v)
{
   (void) index; (void) v;
   noop_warn("glVertexAttribI3uivEXT");
}

static void APIENTRY noopVertexAttribI4bvEXT(GLuint index, const GLbyte *v)
{
   (void) index; (void) v;
   noop_warn("glVertexAttribI4bvEXT");
}

static void APIENTRY noopVertexAttribI4iEXT(GLuint index, GLint x, GLint y, GLint z, GLint w)
{
   (void) index; (void) x; (void) y; (void) z; (void) w;
   noop_warn("glVertexAttribI4iEXT");
}

static void APIENTRY noopVertexAttribI4ivEXT(GLuint index, const GLint *v)
{
   (void) index; (void) v;
   noop_warn("glVertexAttribI4ivEXT");
}

static void APIENTRY noopVertexAttribI4svEXT(GLuint index, const GLshort *v)
{
   (void) index; (void) v;
   noop_warn("glVertexAttribI4svEXT");
}

static void APIENTRY noopVertexAttribI4ubvEXT(GLuint index, const GLubyte *v)
{
   (void) index; (void) v;
   noop_warn("glVertexAttribI4ubvEXT");
}

static void APIENTRY noopVertexAttribI4uiEXT(GLuint index, GLuint x, GLuint y, GLuint z, GLuint w)
{
   (void) index; (void) x; (void) y; (void) z; (void) w;
   noop_warn("glVertexAttribI4uiEXT");
}

static void APIENTRY noopVertexAttribI4uivEXT(GLuint index, const GLuint *v)
{
   (void) index; (void) v;
   noop_warn("glVertexAttribI4uivEXT");
}

static void APIENTRY noopVertexAttribI4usvEXT(GLuint index, const GLushort *v)
{
   (void) index; (void) v;
   noop_warn("glVertexAttribI4usvEXT");
}

static void APIENTRY noopVertexAttribIPointerEXT(GLuint index, GLint size, GLenum type, GLsizei stride, const GLvoid *pointer)
{
   (void) index; (void) size; (void) type; (void) stride; (void) pointer;
   noop_warn("glVertexAttribIPointerEXT");
}

static void APIENTRY noopFramebufferTextureLayerEXT(GLenum target, GLenum attachment, GLuint texture, GLint level, GLint layer)
{
   (void) target; (void) attachment; (void) texture; (void) level; (void) layer;
   noop_warn("glFramebufferTextureLayerEXT");
}

static void APIENTRY noopColorMaskIndexedEXT(GLuint buf, GLboolean r, GLboolean g, GLboolean b, GLboolean a)
{
   (void) buf; (void) r; (void) g; (void) b; (void) a;
   noop_warn("glColorMaskIndexedEXT");
}

static void APIENTRY noopDisableIndexedEXT(GLenum target, GLuint index)
{
   (void) target; (void) index;
   noop_warn("glDisableIndexedEXT");
}

static void APIENTRY noopEnableIndexedEXT(GLenum target, GLuint index)
{
   (void) target; (void) index;
   noop_warn("glEnableIndexedEXT");
}

static void APIENTRY noopGetBooleanIndexedvEXT(GLenum value, GLuint index, GLboolean *data)
{
   (void) value; (void) index; (void) data;
   noop_warn("glGetBooleanIndexedvEXT");
}

static void APIENTRY noopGetIntegerIndexedvEXT(GLenum value, GLuint index, GLint *data)
{
   (void) value; (void) index; (void) data;
   noop_warn("glGetIntegerIndexedvEXT");
}

static GLboolean APIENTRY noopIsEnabledIndexedEXT(GLenum target, GLuint index)
{
   (void) target; (void) index;
   noop_warn("glIsEnabledIndexedEXT");
   return (GLboolean) 0;
}

static void APIENTRY noopClearColorIiEXT(GLint r, GLint g, GLint b, GLint a)
{
   (void) r; (void) g; (void) b; (void) a;
   noop_warn("glClearColorIiEXT");
}

static void APIENTRY noopClearColorIuiEXT(GLuint r, GLuint g, GLuint b, GLuint a)
{
   (void) r; (void) g; (void) b; (void) a;
   noop_warn("glClearColorIuiEXT");
}

static void APIENTRY noopGetTexParameterIivEXT(GLenum target, GLenum pname, GLint *params)
{
   (void) target; (void) pname; (void) params;
   noop_warn("glGetTexParameterIivEXT");
}

static void APIENTRY noopGetTexParameterIuivEXT(GLenum target, GLenum pname, GLuint *params)
{
   (void) target; (void) pname; (void) params;
   noop_warn("glGetTexParameterIuivEXT");
}

static void APIENTRY noopTexParameterIivEXT(GLenum target, GLenum pname, const GLint *params)
{
   (void) target; (void) pname; (void) params;
   noop_warn("glTexParameterIivEXT");
}

static void APIENTRY noopTexParameterIuivEXT(GLenum target, GLenum pname, const GLuint *params)
{
   (void) target; (void) pname; (void) params;
   noop_warn("glTexParameterIuivEXT");
}

static void APIENTRY noopBeginConditionalRenderNV(GLuint query, GLenum mode)
{
   (void) query; (void) mode;
   noop_warn("glBeginConditionalRenderNV");
}

static void APIENTRY noopEndConditionalRenderNV(void)
{
      noop_warn("glEndConditionalRenderNV");
}

static void APIENTRY noopBeginTransformFeedbackEXT(GLenum mode)
{
   (void) mode;
   noop_warn("glBeginTransformFeedbackEXT");
}

static void APIENTRY noopBindBufferBaseEXT(GLenum target, GLuint index, GLuint buffer)
{
   (void) target; (void) index; (void) buffer;
   noop_warn("glBindBufferBaseEXT");
}

static void APIENTRY noopBindBufferOffsetEXT(GLenum target, GLuint index, GLuint buffer, GLintptr offset)
{
   (void) target; (void) index; (void) buffer; (void) offset;
   noop_warn("glBindBufferOffsetEXT");
}

static void APIENTRY noopBindBufferRangeEXT(GLenum target, GLuint index, GLuint buffer, GLintptr offset, GLsizeiptr size)
{
   (void) target; (void) index; (void) buffer; (void) offset; (void) size;
   noop_warn("glBindBufferRangeEXT");
}

static void APIENTRY noopEndTransformFeedbackEXT(void)
{
      noop_warn("glEndTransformFeedbackEXT");
}

static void APIENTRY noopGetTransformFeedbackVaryingEXT(GLuint program, GLuint index, GLsizei bufSize, GLsizei *length, GLsizei *size, GLenum *type, GLchar *name)
{
   (void) program; (void) index; (void) bufSize; (void) length; (void) size; (void) type; (void) name;
   noop_warn("glGetTransformFeedbackVaryingEXT");
}

static void APIENTRY noopTransformFeedbackVaryingsEXT(GLuint program, GLsizei count, const char **varyings, GLenum bufferMode)
{
   (void) program; (void) count; (void) varyings; (void) bufferMode;
   noop_warn("glTransformFeedbackVaryingsEXT");
}

static void APIENTRY noopProvokingVertexEXT(GLenum mode)
{
   (void) mode;
   noop_warn("glProvokingVertexEXT");
}

static void APIENTRY noopGetObjectParameterivAPPLE(GLenum objectType, GLuint name, GLenum pname, GLint *value)
{
   (void) objectType; (void) name; (void) pname; (void) value;
   noop_warn("glGetObjectParameterivAPPLE");
}

static GLenum APIENTRY noopObjectPurgeableAPPLE(GLenum objectType, GLuint name, GLenum option)
{
   (void) objectType; (void) name; (void) option;
   noop_warn("glObjectPurgeableAPPLE");
   return (GLenum) 0;
}

static GLenum APIENTRY noopObjectUnpurgeableAPPLE(GLenum objectType, GLuint name, GLenum option)
{
   (void) objectType; (void) name; (void) option;
   noop_warn("glObjectUnpurgeableAPPLE");
   return (GLenum) 0;
}

static void APIENTRY noopActiveProgramEXT(GLuint program)
{
   (void) program;
   noop_warn("glActiveProgramEXT");
}

static GLuint APIENTRY noopCreateShaderProgramEXT(GLenum type, const GLchar *string)
{
   (void) type; (void) string;
   noop_warn("glCreateShaderProgramEXT");
   return (GLuint) 0;
}

static void APIENTRY noopUseShaderProgramEXT(GLenum type, GLuint program)
{
   (void) type; (void) program;
   noop_warn("glUseShaderProgramEXT");
}

static void APIENTRY noopTextureBarrierNV(void)
{
      noop_warn("glTextureBarrierNV");
}

static void APIENTRY noopStencilFuncSeparateATI(GLenum frontfunc, GLenum backfunc, GLint ref, GLuint mask)
{
   (void) frontfunc; (void) backfunc; (void) ref; (void) mask;
   noop_warn("glStencilFuncSeparateATI");
}

static void APIENTRY noopProgramEnvParameters4fvEXT(GLenum target, GLuint index, GLsizei count, const GLfloat *params)
{
   (void) target; (void) index; (void) count; (void) params;
   noop_warn("glProgramEnvParameters4fvEXT");
}

static void APIENTRY noopProgramLocalParameters4fvEXT(GLenum target, GLuint index, GLsizei count, const GLfloat *params)
{
   (void) target; (void) index; (void) count; (void) params;
   noop_warn("glProgramLocalParameters4fvEXT");
}

static void APIENTRY noopGetQueryObjecti64vEXT(GLuint id, GLenum pname, GLint64EXT *params)
{
   (void) id; (void) pname; (void) params;
   noop_warn("glGetQueryObjecti64vEXT");
}

static void APIENTRY noopGetQueryObjectui64vEXT(GLuint id, GLenum pname, GLuint64EXT *params)
{
   (void) id; (void) pname; (void) params;
   noop_warn("glGetQueryObjectui64vEXT");
}

static void APIENTRY noopEGLImageTargetRenderbufferStorageOES(GLenum target, GLvoid *writeOffset)
{
   (void) target; (void) writeOffset;
   noop_warn("glEGLImageTargetRenderbufferStorageOES");
}

static void APIENTRY noopEGLImageTargetTexture2DOES(GLenum target, GLvoid *writeOffset)
{
   (void) target; (void) writeOffset;
   noop_warn("glEGLImageTargetTexture2DOES");
}

const mapi_func table_noop_array[] = {
   (mapi_func) noopNewList,
   (mapi_func) noopEndList,
   (mapi_func) noopCallList,
   (mapi_func) noopCallLists,
   (mapi_func) noopDeleteLists,
   (mapi_func) noopGenLists,
   (mapi_func) noopListBase,
   (mapi_func) noopBegin,
   (mapi_func) noopBitmap,
   (mapi_func) noopColor3b,
   (mapi_func) noopColor3bv,
   (mapi_func) noopColor3d,
   (mapi_func) noopColor3dv,
   (mapi_func) noopColor3f,
   (mapi_func) noopColor3fv,
   (mapi_func) noopColor3i,
   (mapi_func) noopColor3iv,
   (mapi_func) noopColor3s,
   (mapi_func) noopColor3sv,
   (mapi_func) noopColor3ub,
   (mapi_func) noopColor3ubv,
   (mapi_func) noopColor3ui,
   (mapi_func) noopColor3uiv,
   (mapi_func) noopColor3us,
   (mapi_func) noopColor3usv,
   (mapi_func) noopColor4b,
   (mapi_func) noopColor4bv,
   (mapi_func) noopColor4d,
   (mapi_func) noopColor4dv,
   (mapi_func) noopColor4f,
   (mapi_func) noopColor4fv,
   (mapi_func) noopColor4i,
   (mapi_func) noopColor4iv,
   (mapi_func) noopColor4s,
   (mapi_func) noopColor4sv,
   (mapi_func) noopColor4ub,
   (mapi_func) noopColor4ubv,
   (mapi_func) noopColor4ui,
   (mapi_func) noopColor4uiv,
   (mapi_func) noopColor4us,
   (mapi_func) noopColor4usv,
   (mapi_func) noopEdgeFlag,
   (mapi_func) noopEdgeFlagv,
   (mapi_func) noopEnd,
   (mapi_func) noopIndexd,
   (mapi_func) noopIndexdv,
   (mapi_func) noopIndexf,
   (mapi_func) noopIndexfv,
   (mapi_func) noopIndexi,
   (mapi_func) noopIndexiv,
   (mapi_func) noopIndexs,
   (mapi_func) noopIndexsv,
   (mapi_func) noopNormal3b,
   (mapi_func) noopNormal3bv,
   (mapi_func) noopNormal3d,
   (mapi_func) noopNormal3dv,
   (mapi_func) noopNormal3f,
   (mapi_func) noopNormal3fv,
   (mapi_func) noopNormal3i,
   (mapi_func) noopNormal3iv,
   (mapi_func) noopNormal3s,
   (mapi_func) noopNormal3sv,
   (mapi_func) noopRasterPos2d,
   (mapi_func) noopRasterPos2dv,
   (mapi_func) noopRasterPos2f,
   (mapi_func) noopRasterPos2fv,
   (mapi_func) noopRasterPos2i,
   (mapi_func) noopRasterPos2iv,
   (mapi_func) noopRasterPos2s,
   (mapi_func) noopRasterPos2sv,
   (mapi_func) noopRasterPos3d,
   (mapi_func) noopRasterPos3dv,
   (mapi_func) noopRasterPos3f,
   (mapi_func) noopRasterPos3fv,
   (mapi_func) noopRasterPos3i,
   (mapi_func) noopRasterPos3iv,
   (mapi_func) noopRasterPos3s,
   (mapi_func) noopRasterPos3sv,
   (mapi_func) noopRasterPos4d,
   (mapi_func) noopRasterPos4dv,
   (mapi_func) noopRasterPos4f,
   (mapi_func) noopRasterPos4fv,
   (mapi_func) noopRasterPos4i,
   (mapi_func) noopRasterPos4iv,
   (mapi_func) noopRasterPos4s,
   (mapi_func) noopRasterPos4sv,
   (mapi_func) noopRectd,
   (mapi_func) noopRectdv,
   (mapi_func) noopRectf,
   (mapi_func) noopRectfv,
   (mapi_func) noopRecti,
   (mapi_func) noopRectiv,
   (mapi_func) noopRects,
   (mapi_func) noopRectsv,
   (mapi_func) noopTexCoord1d,
   (mapi_func) noopTexCoord1dv,
   (mapi_func) noopTexCoord1f,
   (mapi_func) noopTexCoord1fv,
   (mapi_func) noopTexCoord1i,
   (mapi_func) noopTexCoord1iv,
   (mapi_func) noopTexCoord1s,
   (mapi_func) noopTexCoord1sv,
   (mapi_func) noopTexCoord2d,
   (mapi_func) noopTexCoord2dv,
   (mapi_func) noopTexCoord2f,
   (mapi_func) noopTexCoord2fv,
   (mapi_func) noopTexCoord2i,
   (mapi_func) noopTexCoord2iv,
   (mapi_func) noopTexCoord2s,
   (mapi_func) noopTexCoord2sv,
   (mapi_func) noopTexCoord3d,
   (mapi_func) noopTexCoord3dv,
   (mapi_func) noopTexCoord3f,
   (mapi_func) noopTexCoord3fv,
   (mapi_func) noopTexCoord3i,
   (mapi_func) noopTexCoord3iv,
   (mapi_func) noopTexCoord3s,
   (mapi_func) noopTexCoord3sv,
   (mapi_func) noopTexCoord4d,
   (mapi_func) noopTexCoord4dv,
   (mapi_func) noopTexCoord4f,
   (mapi_func) noopTexCoord4fv,
   (mapi_func) noopTexCoord4i,
   (mapi_func) noopTexCoord4iv,
   (mapi_func) noopTexCoord4s,
   (mapi_func) noopTexCoord4sv,
   (mapi_func) noopVertex2d,
   (mapi_func) noopVertex2dv,
   (mapi_func) noopVertex2f,
   (mapi_func) noopVertex2fv,
   (mapi_func) noopVertex2i,
   (mapi_func) noopVertex2iv,
   (mapi_func) noopVertex2s,
   (mapi_func) noopVertex2sv,
   (mapi_func) noopVertex3d,
   (mapi_func) noopVertex3dv,
   (mapi_func) noopVertex3f,
   (mapi_func) noopVertex3fv,
   (mapi_func) noopVertex3i,
   (mapi_func) noopVertex3iv,
   (mapi_func) noopVertex3s,
   (mapi_func) noopVertex3sv,
   (mapi_func) noopVertex4d,
   (mapi_func) noopVertex4dv,
   (mapi_func) noopVertex4f,
   (mapi_func) noopVertex4fv,
   (mapi_func) noopVertex4i,
   (mapi_func) noopVertex4iv,
   (mapi_func) noopVertex4s,
   (mapi_func) noopVertex4sv,
   (mapi_func) noopClipPlane,
   (mapi_func) noopColorMaterial,
   (mapi_func) noopCullFace,
   (mapi_func) noopFogf,
   (mapi_func) noopFogfv,
   (mapi_func) noopFogi,
   (mapi_func) noopFogiv,
   (mapi_func) noopFrontFace,
   (mapi_func) noopHint,
   (mapi_func) noopLightf,
   (mapi_func) noopLightfv,
   (mapi_func) noopLighti,
   (mapi_func) noopLightiv,
   (mapi_func) noopLightModelf,
   (mapi_func) noopLightModelfv,
   (mapi_func) noopLightModeli,
   (mapi_func) noopLightModeliv,
   (mapi_func) noopLineStipple,
   (mapi_func) noopLineWidth,
   (mapi_func) noopMaterialf,
   (mapi_func) noopMaterialfv,
   (mapi_func) noopMateriali,
   (mapi_func) noopMaterialiv,
   (mapi_func) noopPointSize,
   (mapi_func) noopPolygonMode,
   (mapi_func) noopPolygonStipple,
   (mapi_func) noopScissor,
   (mapi_func) noopShadeModel,
   (mapi_func) noopTexParameterf,
   (mapi_func) noopTexParameterfv,
   (mapi_func) noopTexParameteri,
   (mapi_func) noopTexParameteriv,
   (mapi_func) noopTexImage1D,
   (mapi_func) noopTexImage2D,
   (mapi_func) noopTexEnvf,
   (mapi_func) noopTexEnvfv,
   (mapi_func) noopTexEnvi,
   (mapi_func) noopTexEnviv,
   (mapi_func) noopTexGend,
   (mapi_func) noopTexGendv,
   (mapi_func) noopTexGenf,
   (mapi_func) noopTexGenfv,
   (mapi_func) noopTexGeni,
   (mapi_func) noopTexGeniv,
   (mapi_func) noopFeedbackBuffer,
   (mapi_func) noopSelectBuffer,
   (mapi_func) noopRenderMode,
   (mapi_func) noopInitNames,
   (mapi_func) noopLoadName,
   (mapi_func) noopPassThrough,
   (mapi_func) noopPopName,
   (mapi_func) noopPushName,
   (mapi_func) noopDrawBuffer,
   (mapi_func) noopClear,
   (mapi_func) noopClearAccum,
   (mapi_func) noopClearIndex,
   (mapi_func) noopClearColor,
   (mapi_func) noopClearStencil,
   (mapi_func) noopClearDepth,
   (mapi_func) noopStencilMask,
   (mapi_func) noopColorMask,
   (mapi_func) noopDepthMask,
   (mapi_func) noopIndexMask,
   (mapi_func) noopAccum,
   (mapi_func) noopDisable,
   (mapi_func) noopEnable,
   (mapi_func) noopFinish,
   (mapi_func) noopFlush,
   (mapi_func) noopPopAttrib,
   (mapi_func) noopPushAttrib,
   (mapi_func) noopMap1d,
   (mapi_func) noopMap1f,
   (mapi_func) noopMap2d,
   (mapi_func) noopMap2f,
   (mapi_func) noopMapGrid1d,
   (mapi_func) noopMapGrid1f,
   (mapi_func) noopMapGrid2d,
   (mapi_func) noopMapGrid2f,
   (mapi_func) noopEvalCoord1d,
   (mapi_func) noopEvalCoord1dv,
   (mapi_func) noopEvalCoord1f,
   (mapi_func) noopEvalCoord1fv,
   (mapi_func) noopEvalCoord2d,
   (mapi_func) noopEvalCoord2dv,
   (mapi_func) noopEvalCoord2f,
   (mapi_func) noopEvalCoord2fv,
   (mapi_func) noopEvalMesh1,
   (mapi_func) noopEvalPoint1,
   (mapi_func) noopEvalMesh2,
   (mapi_func) noopEvalPoint2,
   (mapi_func) noopAlphaFunc,
   (mapi_func) noopBlendFunc,
   (mapi_func) noopLogicOp,
   (mapi_func) noopStencilFunc,
   (mapi_func) noopStencilOp,
   (mapi_func) noopDepthFunc,
   (mapi_func) noopPixelZoom,
   (mapi_func) noopPixelTransferf,
   (mapi_func) noopPixelTransferi,
   (mapi_func) noopPixelStoref,
   (mapi_func) noopPixelStorei,
   (mapi_func) noopPixelMapfv,
   (mapi_func) noopPixelMapuiv,
   (mapi_func) noopPixelMapusv,
   (mapi_func) noopReadBuffer,
   (mapi_func) noopCopyPixels,
   (mapi_func) noopReadPixels,
   (mapi_func) noopDrawPixels,
   (mapi_func) noopGetBooleanv,
   (mapi_func) noopGetClipPlane,
   (mapi_func) noopGetDoublev,
   (mapi_func) noopGetError,
   (mapi_func) noopGetFloatv,
   (mapi_func) noopGetIntegerv,
   (mapi_func) noopGetLightfv,
   (mapi_func) noopGetLightiv,
   (mapi_func) noopGetMapdv,
   (mapi_func) noopGetMapfv,
   (mapi_func) noopGetMapiv,
   (mapi_func) noopGetMaterialfv,
   (mapi_func) noopGetMaterialiv,
   (mapi_func) noopGetPixelMapfv,
   (mapi_func) noopGetPixelMapuiv,
   (mapi_func) noopGetPixelMapusv,
   (mapi_func) noopGetPolygonStipple,
   (mapi_func) noopGetString,
   (mapi_func) noopGetTexEnvfv,
   (mapi_func) noopGetTexEnviv,
   (mapi_func) noopGetTexGendv,
   (mapi_func) noopGetTexGenfv,
   (mapi_func) noopGetTexGeniv,
   (mapi_func) noopGetTexImage,
   (mapi_func) noopGetTexParameterfv,
   (mapi_func) noopGetTexParameteriv,
   (mapi_func) noopGetTexLevelParameterfv,
   (mapi_func) noopGetTexLevelParameteriv,
   (mapi_func) noopIsEnabled,
   (mapi_func) noopIsList,
   (mapi_func) noopDepthRange,
   (mapi_func) noopFrustum,
   (mapi_func) noopLoadIdentity,
   (mapi_func) noopLoadMatrixf,
   (mapi_func) noopLoadMatrixd,
   (mapi_func) noopMatrixMode,
   (mapi_func) noopMultMatrixf,
   (mapi_func) noopMultMatrixd,
   (mapi_func) noopOrtho,
   (mapi_func) noopPopMatrix,
   (mapi_func) noopPushMatrix,
   (mapi_func) noopRotated,
   (mapi_func) noopRotatef,
   (mapi_func) noopScaled,
   (mapi_func) noopScalef,
   (mapi_func) noopTranslated,
   (mapi_func) noopTranslatef,
   (mapi_func) noopViewport,
   (mapi_func) noopArrayElement,
   (mapi_func) noopBindTexture,
   (mapi_func) noopColorPointer,
   (mapi_func) noopDisableClientState,
   (mapi_func) noopDrawArrays,
   (mapi_func) noopDrawElements,
   (mapi_func) noopEdgeFlagPointer,
   (mapi_func) noopEnableClientState,
   (mapi_func) noopIndexPointer,
   (mapi_func) noopIndexub,
   (mapi_func) noopIndexubv,
   (mapi_func) noopInterleavedArrays,
   (mapi_func) noopNormalPointer,
   (mapi_func) noopPolygonOffset,
   (mapi_func) noopTexCoordPointer,
   (mapi_func) noopVertexPointer,
   (mapi_func) noopAreTexturesResident,
   (mapi_func) noopCopyTexImage1D,
   (mapi_func) noopCopyTexImage2D,
   (mapi_func) noopCopyTexSubImage1D,
   (mapi_func) noopCopyTexSubImage2D,
   (mapi_func) noopDeleteTextures,
   (mapi_func) noopGenTextures,
   (mapi_func) noopGetPointerv,
   (mapi_func) noopIsTexture,
   (mapi_func) noopPrioritizeTextures,
   (mapi_func) noopTexSubImage1D,
   (mapi_func) noopTexSubImage2D,
   (mapi_func) noopPopClientAttrib,
   (mapi_func) noopPushClientAttrib,
   (mapi_func) noopBlendColor,
   (mapi_func) noopBlendEquation,
   (mapi_func) noopDrawRangeElements,
   (mapi_func) noopColorTable,
   (mapi_func) noopColorTableParameterfv,
   (mapi_func) noopColorTableParameteriv,
   (mapi_func) noopCopyColorTable,
   (mapi_func) noopGetColorTable,
   (mapi_func) noopGetColorTableParameterfv,
   (mapi_func) noopGetColorTableParameteriv,
   (mapi_func) noopColorSubTable,
   (mapi_func) noopCopyColorSubTable,
   (mapi_func) noopConvolutionFilter1D,
   (mapi_func) noopConvolutionFilter2D,
   (mapi_func) noopConvolutionParameterf,
   (mapi_func) noopConvolutionParameterfv,
   (mapi_func) noopConvolutionParameteri,
   (mapi_func) noopConvolutionParameteriv,
   (mapi_func) noopCopyConvolutionFilter1D,
   (mapi_func) noopCopyConvolutionFilter2D,
   (mapi_func) noopGetConvolutionFilter,
   (mapi_func) noopGetConvolutionParameterfv,
   (mapi_func) noopGetConvolutionParameteriv,
   (mapi_func) noopGetSeparableFilter,
   (mapi_func) noopSeparableFilter2D,
   (mapi_func) noopGetHistogram,
   (mapi_func) noopGetHistogramParameterfv,
   (mapi_func) noopGetHistogramParameteriv,
   (mapi_func) noopGetMinmax,
   (mapi_func) noopGetMinmaxParameterfv,
   (mapi_func) noopGetMinmaxParameteriv,
   (mapi_func) noopHistogram,
   (mapi_func) noopMinmax,
   (mapi_func) noopResetHistogram,
   (mapi_func) noopResetMinmax,
   (mapi_func) noopTexImage3D,
   (mapi_func) noopTexSubImage3D,
   (mapi_func) noopCopyTexSubImage3D,
   (mapi_func) noopActiveTextureARB,
   (mapi_func) noopClientActiveTextureARB,
   (mapi_func) noopMultiTexCoord1dARB,
   (mapi_func) noopMultiTexCoord1dvARB,
   (mapi_func) noopMultiTexCoord1fARB,
   (mapi_func) noopMultiTexCoord1fvARB,
   (mapi_func) noopMultiTexCoord1iARB,
   (mapi_func) noopMultiTexCoord1ivARB,
   (mapi_func) noopMultiTexCoord1sARB,
   (mapi_func) noopMultiTexCoord1svARB,
   (mapi_func) noopMultiTexCoord2dARB,
   (mapi_func) noopMultiTexCoord2dvARB,
   (mapi_func) noopMultiTexCoord2fARB,
   (mapi_func) noopMultiTexCoord2fvARB,
   (mapi_func) noopMultiTexCoord2iARB,
   (mapi_func) noopMultiTexCoord2ivARB,
   (mapi_func) noopMultiTexCoord2sARB,
   (mapi_func) noopMultiTexCoord2svARB,
   (mapi_func) noopMultiTexCoord3dARB,
   (mapi_func) noopMultiTexCoord3dvARB,
   (mapi_func) noopMultiTexCoord3fARB,
   (mapi_func) noopMultiTexCoord3fvARB,
   (mapi_func) noopMultiTexCoord3iARB,
   (mapi_func) noopMultiTexCoord3ivARB,
   (mapi_func) noopMultiTexCoord3sARB,
   (mapi_func) noopMultiTexCoord3svARB,
   (mapi_func) noopMultiTexCoord4dARB,
   (mapi_func) noopMultiTexCoord4dvARB,
   (mapi_func) noopMultiTexCoord4fARB,
   (mapi_func) noopMultiTexCoord4fvARB,
   (mapi_func) noopMultiTexCoord4iARB,
   (mapi_func) noopMultiTexCoord4ivARB,
   (mapi_func) noopMultiTexCoord4sARB,
   (mapi_func) noopMultiTexCoord4svARB,
   (mapi_func) noopAttachShader,
   (mapi_func) noopCreateProgram,
   (mapi_func) noopCreateShader,
   (mapi_func) noopDeleteProgram,
   (mapi_func) noopDeleteShader,
   (mapi_func) noopDetachShader,
   (mapi_func) noopGetAttachedShaders,
   (mapi_func) noopGetProgramInfoLog,
   (mapi_func) noopGetProgramiv,
   (mapi_func) noopGetShaderInfoLog,
   (mapi_func) noopGetShaderiv,
   (mapi_func) noopIsProgram,
   (mapi_func) noopIsShader,
   (mapi_func) noopStencilFuncSeparate,
   (mapi_func) noopStencilMaskSeparate,
   (mapi_func) noopStencilOpSeparate,
   (mapi_func) noopUniformMatrix2x3fv,
   (mapi_func) noopUniformMatrix2x4fv,
   (mapi_func) noopUniformMatrix3x2fv,
   (mapi_func) noopUniformMatrix3x4fv,
   (mapi_func) noopUniformMatrix4x2fv,
   (mapi_func) noopUniformMatrix4x3fv,
   (mapi_func) noopClampColor,
   (mapi_func) noopClearBufferfi,
   (mapi_func) noopClearBufferfv,
   (mapi_func) noopClearBufferiv,
   (mapi_func) noopClearBufferuiv,
   (mapi_func) noopGetStringi,
   (mapi_func) noopFramebufferTexture,
   (mapi_func) noopGetBufferParameteri64v,
   (mapi_func) noopGetInteger64i_v,
   (mapi_func) noopVertexAttribDivisor,
   (mapi_func) noopLoadTransposeMatrixdARB,
   (mapi_func) noopLoadTransposeMatrixfARB,
   (mapi_func) noopMultTransposeMatrixdARB,
   (mapi_func) noopMultTransposeMatrixfARB,
   (mapi_func) noopSampleCoverageARB,
   (mapi_func) noopCompressedTexImage1DARB,
   (mapi_func) noopCompressedTexImage2DARB,
   (mapi_func) noopCompressedTexImage3DARB,
   (mapi_func) noopCompressedTexSubImage1DARB,
   (mapi_func) noopCompressedTexSubImage2DARB,
   (mapi_func) noopCompressedTexSubImage3DARB,
   (mapi_func) noopGetCompressedTexImageARB,
   (mapi_func) noopDisableVertexAttribArrayARB,
   (mapi_func) noopEnableVertexAttribArrayARB,
   (mapi_func) noopGetProgramEnvParameterdvARB,
   (mapi_func) noopGetProgramEnvParameterfvARB,
   (mapi_func) noopGetProgramLocalParameterdvARB,
   (mapi_func) noopGetProgramLocalParameterfvARB,
   (mapi_func) noopGetProgramStringARB,
   (mapi_func) noopGetProgramivARB,
   (mapi_func) noopGetVertexAttribdvARB,
   (mapi_func) noopGetVertexAttribfvARB,
   (mapi_func) noopGetVertexAttribivARB,
   (mapi_func) noopProgramEnvParameter4dARB,
   (mapi_func) noopProgramEnvParameter4dvARB,
   (mapi_func) noopProgramEnvParameter4fARB,
   (mapi_func) noopProgramEnvParameter4fvARB,
   (mapi_func) noopProgramLocalParameter4dARB,
   (mapi_func) noopProgramLocalParameter4dvARB,
   (mapi_func) noopProgramLocalParameter4fARB,
   (mapi_func) noopProgramLocalParameter4fvARB,
   (mapi_func) noopProgramStringARB,
   (mapi_func) noopVertexAttrib1dARB,
   (mapi_func) noopVertexAttrib1dvARB,
   (mapi_func) noopVertexAttrib1fARB,
   (mapi_func) noopVertexAttrib1fvARB,
   (mapi_func) noopVertexAttrib1sARB,
   (mapi_func) noopVertexAttrib1svARB,
   (mapi_func) noopVertexAttrib2dARB,
   (mapi_func) noopVertexAttrib2dvARB,
   (mapi_func) noopVertexAttrib2fARB,
   (mapi_func) noopVertexAttrib2fvARB,
   (mapi_func) noopVertexAttrib2sARB,
   (mapi_func) noopVertexAttrib2svARB,
   (mapi_func) noopVertexAttrib3dARB,
   (mapi_func) noopVertexAttrib3dvARB,
   (mapi_func) noopVertexAttrib3fARB,
   (mapi_func) noopVertexAttrib3fvARB,
   (mapi_func) noopVertexAttrib3sARB,
   (mapi_func) noopVertexAttrib3svARB,
   (mapi_func) noopVertexAttrib4NbvARB,
   (mapi_func) noopVertexAttrib4NivARB,
   (mapi_func) noopVertexAttrib4NsvARB,
   (mapi_func) noopVertexAttrib4NubARB,
   (mapi_func) noopVertexAttrib4NubvARB,
   (mapi_func) noopVertexAttrib4NuivARB,
   (mapi_func) noopVertexAttrib4NusvARB,
   (mapi_func) noopVertexAttrib4bvARB,
   (mapi_func) noopVertexAttrib4dARB,
   (mapi_func) noopVertexAttrib4dvARB,
   (mapi_func) noopVertexAttrib4fARB,
   (mapi_func) noopVertexAttrib4fvARB,
   (mapi_func) noopVertexAttrib4ivARB,
   (mapi_func) noopVertexAttrib4sARB,
   (mapi_func) noopVertexAttrib4svARB,
   (mapi_func) noopVertexAttrib4ubvARB,
   (mapi_func) noopVertexAttrib4uivARB,
   (mapi_func) noopVertexAttrib4usvARB,
   (mapi_func) noopVertexAttribPointerARB,
   (mapi_func) noopBindBufferARB,
   (mapi_func) noopBufferDataARB,
   (mapi_func) noopBufferSubDataARB,
   (mapi_func) noopDeleteBuffersARB,
   (mapi_func) noopGenBuffersARB,
   (mapi_func) noopGetBufferParameterivARB,
   (mapi_func) noopGetBufferPointervARB,
   (mapi_func) noopGetBufferSubDataARB,
   (mapi_func) noopIsBufferARB,
   (mapi_func) noopMapBufferARB,
   (mapi_func) noopUnmapBufferARB,
   (mapi_func) noopBeginQueryARB,
   (mapi_func) noopDeleteQueriesARB,
   (mapi_func) noopEndQueryARB,
   (mapi_func) noopGenQueriesARB,
   (mapi_func) noopGetQueryObjectivARB,
   (mapi_func) noopGetQueryObjectuivARB,
   (mapi_func) noopGetQueryivARB,
   (mapi_func) noopIsQueryARB,
   (mapi_func) noopAttachObjectARB,
   (mapi_func) noopCompileShaderARB,
   (mapi_func) noopCreateProgramObjectARB,
   (mapi_func) noopCreateShaderObjectARB,
   (mapi_func) noopDeleteObjectARB,
   (mapi_func) noopDetachObjectARB,
   (mapi_func) noopGetActiveUniformARB,
   (mapi_func) noopGetAttachedObjectsARB,
   (mapi_func) noopGetHandleARB,
   (mapi_func) noopGetInfoLogARB,
   (mapi_func) noopGetObjectParameterfvARB,
   (mapi_func) noopGetObjectParameterivARB,
   (mapi_func) noopGetShaderSourceARB,
   (mapi_func) noopGetUniformLocationARB,
   (mapi_func) noopGetUniformfvARB,
   (mapi_func) noopGetUniformivARB,
   (mapi_func) noopLinkProgramARB,
   (mapi_func) noopShaderSourceARB,
   (mapi_func) noopUniform1fARB,
   (mapi_func) noopUniform1fvARB,
   (mapi_func) noopUniform1iARB,
   (mapi_func) noopUniform1ivARB,
   (mapi_func) noopUniform2fARB,
   (mapi_func) noopUniform2fvARB,
   (mapi_func) noopUniform2iARB,
   (mapi_func) noopUniform2ivARB,
   (mapi_func) noopUniform3fARB,
   (mapi_func) noopUniform3fvARB,
   (mapi_func) noopUniform3iARB,
   (mapi_func) noopUniform3ivARB,
   (mapi_func) noopUniform4fARB,
   (mapi_func) noopUniform4fvARB,
   (mapi_func) noopUniform4iARB,
   (mapi_func) noopUniform4ivARB,
   (mapi_func) noopUniformMatrix2fvARB,
   (mapi_func) noopUniformMatrix3fvARB,
   (mapi_func) noopUniformMatrix4fvARB,
   (mapi_func) noopUseProgramObjectARB,
   (mapi_func) noopValidateProgramARB,
   (mapi_func) noopBindAttribLocationARB,
   (mapi_func) noopGetActiveAttribARB,
   (mapi_func) noopGetAttribLocationARB,
   (mapi_func) noopDrawBuffersARB,
   (mapi_func) noopClampColorARB,
   (mapi_func) noopDrawArraysInstancedARB,
   (mapi_func) noopDrawElementsInstancedARB,
   (mapi_func) noopRenderbufferStorageMultisample,
   (mapi_func) noopFramebufferTextureARB,
   (mapi_func) noopFramebufferTextureFaceARB,
   (mapi_func) noopProgramParameteriARB,
   (mapi_func) noopVertexAttribDivisorARB,
   (mapi_func) noopFlushMappedBufferRange,
   (mapi_func) noopMapBufferRange,
   (mapi_func) noopTexBufferARB,
   (mapi_func) noopBindVertexArray,
   (mapi_func) noopGenVertexArrays,
   (mapi_func) noopGetActiveUniformBlockName,
   (mapi_func) noopGetActiveUniformBlockiv,
   (mapi_func) noopGetActiveUniformName,
   (mapi_func) noopGetActiveUniformsiv,
   (mapi_func) noopGetUniformBlockIndex,
   (mapi_func) noopGetUniformIndices,
   (mapi_func) noopUniformBlockBinding,
   (mapi_func) noopCopyBufferSubData,
   (mapi_func) noopClientWaitSync,
   (mapi_func) noopDeleteSync,
   (mapi_func) noopFenceSync,
   (mapi_func) noopGetInteger64v,
   (mapi_func) noopGetSynciv,
   (mapi_func) noopIsSync,
   (mapi_func) noopWaitSync,
   (mapi_func) noopDrawElementsBaseVertex,
   (mapi_func) noopDrawElementsInstancedBaseVertex,
   (mapi_func) noopDrawRangeElementsBaseVertex,
   (mapi_func) noopMultiDrawElementsBaseVertex,
   (mapi_func) noopBlendEquationSeparateiARB,
   (mapi_func) noopBlendEquationiARB,
   (mapi_func) noopBlendFuncSeparateiARB,
   (mapi_func) noopBlendFunciARB,
   (mapi_func) noopBindFragDataLocationIndexed,
   (mapi_func) noopGetFragDataIndex,
   (mapi_func) noopBindSampler,
   (mapi_func) noopDeleteSamplers,
   (mapi_func) noopGenSamplers,
   (mapi_func) noopGetSamplerParameterIiv,
   (mapi_func) noopGetSamplerParameterIuiv,
   (mapi_func) noopGetSamplerParameterfv,
   (mapi_func) noopGetSamplerParameteriv,
   (mapi_func) noopIsSampler,
   (mapi_func) noopSamplerParameterIiv,
   (mapi_func) noopSamplerParameterIuiv,
   (mapi_func) noopSamplerParameterf,
   (mapi_func) noopSamplerParameterfv,
   (mapi_func) noopSamplerParameteri,
   (mapi_func) noopSamplerParameteriv,
   (mapi_func) noopQueryCounter,
   (mapi_func) noopColorP3ui,
   (mapi_func) noopColorP3uiv,
   (mapi_func) noopColorP4ui,
   (mapi_func) noopColorP4uiv,
   (mapi_func) noopMultiTexCoordP1ui,
   (mapi_func) noopMultiTexCoordP1uiv,
   (mapi_func) noopMultiTexCoordP2ui,
   (mapi_func) noopMultiTexCoordP2uiv,
   (mapi_func) noopMultiTexCoordP3ui,
   (mapi_func) noopMultiTexCoordP3uiv,
   (mapi_func) noopMultiTexCoordP4ui,
   (mapi_func) noopMultiTexCoordP4uiv,
   (mapi_func) noopNormalP3ui,
   (mapi_func) noopNormalP3uiv,
   (mapi_func) noopSecondaryColorP3ui,
   (mapi_func) noopSecondaryColorP3uiv,
   (mapi_func) noopTexCoordP1ui,
   (mapi_func) noopTexCoordP1uiv,
   (mapi_func) noopTexCoordP2ui,
   (mapi_func) noopTexCoordP2uiv,
   (mapi_func) noopTexCoordP3ui,
   (mapi_func) noopTexCoordP3uiv,
   (mapi_func) noopTexCoordP4ui,
   (mapi_func) noopTexCoordP4uiv,
   (mapi_func) noopVertexAttribP1ui,
   (mapi_func) noopVertexAttribP1uiv,
   (mapi_func) noopVertexAttribP2ui,
   (mapi_func) noopVertexAttribP2uiv,
   (mapi_func) noopVertexAttribP3ui,
   (mapi_func) noopVertexAttribP3uiv,
   (mapi_func) noopVertexAttribP4ui,
   (mapi_func) noopVertexAttribP4uiv,
   (mapi_func) noopVertexP2ui,
   (mapi_func) noopVertexP2uiv,
   (mapi_func) noopVertexP3ui,
   (mapi_func) noopVertexP3uiv,
   (mapi_func) noopVertexP4ui,
   (mapi_func) noopVertexP4uiv,
   (mapi_func) noopBindTransformFeedback,
   (mapi_func) noopDeleteTransformFeedbacks,
   (mapi_func) noopDrawTransformFeedback,
   (mapi_func) noopGenTransformFeedbacks,
   (mapi_func) noopIsTransformFeedback,
   (mapi_func) noopPauseTransformFeedback,
   (mapi_func) noopResumeTransformFeedback,
   (mapi_func) noopBeginQueryIndexed,
   (mapi_func) noopDrawTransformFeedbackStream,
   (mapi_func) noopEndQueryIndexed,
   (mapi_func) noopGetQueryIndexediv,
   (mapi_func) noopClearDepthf,
   (mapi_func) noopDepthRangef,
   (mapi_func) noopGetShaderPrecisionFormat,
   (mapi_func) noopReleaseShaderCompiler,
   (mapi_func) noopShaderBinary,
   (mapi_func) noopGetProgramBinary,
   (mapi_func) noopProgramBinary,
   (mapi_func) noopProgramParameteri,
   (mapi_func) noopDebugMessageCallbackARB,
   (mapi_func) noopDebugMessageControlARB,
   (mapi_func) noopDebugMessageInsertARB,
   (mapi_func) noopGetDebugMessageLogARB,
   (mapi_func) noopGetGraphicsResetStatusARB,
   (mapi_func) noopGetnColorTableARB,
   (mapi_func) noopGetnCompressedTexImageARB,
   (mapi_func) noopGetnConvolutionFilterARB,
   (mapi_func) noopGetnHistogramARB,
   (mapi_func) noopGetnMapdvARB,
   (mapi_func) noopGetnMapfvARB,
   (mapi_func) noopGetnMapivARB,
   (mapi_func) noopGetnMinmaxARB,
   (mapi_func) noopGetnPixelMapfvARB,
   (mapi_func) noopGetnPixelMapuivARB,
   (mapi_func) noopGetnPixelMapusvARB,
   (mapi_func) noopGetnPolygonStippleARB,
   (mapi_func) noopGetnSeparableFilterARB,
   (mapi_func) noopGetnTexImageARB,
   (mapi_func) noopGetnUniformdvARB,
   (mapi_func) noopGetnUniformfvARB,
   (mapi_func) noopGetnUniformivARB,
   (mapi_func) noopGetnUniformuivARB,
   (mapi_func) noopReadnPixelsARB,
   (mapi_func) noopDrawArraysInstancedBaseInstance,
   (mapi_func) noopDrawElementsInstancedBaseInstance,
   (mapi_func) noopDrawElementsInstancedBaseVertexBaseInstance,
   (mapi_func) noopDrawTransformFeedbackInstanced,
   (mapi_func) noopDrawTransformFeedbackStreamInstanced,
   (mapi_func) noopTexStorage1D,
   (mapi_func) noopTexStorage2D,
   (mapi_func) noopTexStorage3D,
   (mapi_func) noopTextureStorage1DEXT,
   (mapi_func) noopTextureStorage2DEXT,
   (mapi_func) noopTextureStorage3DEXT,
   (mapi_func) noopInvalidateBufferData,
   (mapi_func) noopInvalidateBufferSubData,
   (mapi_func) noopInvalidateFramebuffer,
   (mapi_func) noopInvalidateSubFramebuffer,
   (mapi_func) noopInvalidateTexImage,
   (mapi_func) noopInvalidateTexSubImage,
   (mapi_func) noopPolygonOffsetEXT,
   (mapi_func) noopDrawTexfOES,
   (mapi_func) noopDrawTexfvOES,
   (mapi_func) noopDrawTexiOES,
   (mapi_func) noopDrawTexivOES,
   (mapi_func) noopDrawTexsOES,
   (mapi_func) noopDrawTexsvOES,
   (mapi_func) noopDrawTexxOES,
   (mapi_func) noopDrawTexxvOES,
   (mapi_func) noopPointSizePointerOES,
   (mapi_func) noopQueryMatrixxOES,
   (mapi_func) noopSampleMaskSGIS,
   (mapi_func) noopSamplePatternSGIS,
   (mapi_func) noopColorPointerEXT,
   (mapi_func) noopEdgeFlagPointerEXT,
   (mapi_func) noopIndexPointerEXT,
   (mapi_func) noopNormalPointerEXT,
   (mapi_func) noopTexCoordPointerEXT,
   (mapi_func) noopVertexPointerEXT,
   (mapi_func) noopPointParameterfEXT,
   (mapi_func) noopPointParameterfvEXT,
   (mapi_func) noopLockArraysEXT,
   (mapi_func) noopUnlockArraysEXT,
   (mapi_func) noopSecondaryColor3bEXT,
   (mapi_func) noopSecondaryColor3bvEXT,
   (mapi_func) noopSecondaryColor3dEXT,
   (mapi_func) noopSecondaryColor3dvEXT,
   (mapi_func) noopSecondaryColor3fEXT,
   (mapi_func) noopSecondaryColor3fvEXT,
   (mapi_func) noopSecondaryColor3iEXT,
   (mapi_func) noopSecondaryColor3ivEXT,
   (mapi_func) noopSecondaryColor3sEXT,
   (mapi_func) noopSecondaryColor3svEXT,
   (mapi_func) noopSecondaryColor3ubEXT,
   (mapi_func) noopSecondaryColor3ubvEXT,
   (mapi_func) noopSecondaryColor3uiEXT,
   (mapi_func) noopSecondaryColor3uivEXT,
   (mapi_func) noopSecondaryColor3usEXT,
   (mapi_func) noopSecondaryColor3usvEXT,
   (mapi_func) noopSecondaryColorPointerEXT,
   (mapi_func) noopMultiDrawArraysEXT,
   (mapi_func) noopMultiDrawElementsEXT,
   (mapi_func) noopFogCoordPointerEXT,
   (mapi_func) noopFogCoorddEXT,
   (mapi_func) noopFogCoorddvEXT,
   (mapi_func) noopFogCoordfEXT,
   (mapi_func) noopFogCoordfvEXT,
   (mapi_func) noopBlendFuncSeparateEXT,
   (mapi_func) noopResizeBuffersMESA,
   (mapi_func) noopWindowPos2dMESA,
   (mapi_func) noopWindowPos2dvMESA,
   (mapi_func) noopWindowPos2fMESA,
   (mapi_func) noopWindowPos2fvMESA,
   (mapi_func) noopWindowPos2iMESA,
   (mapi_func) noopWindowPos2ivMESA,
   (mapi_func) noopWindowPos2sMESA,
   (mapi_func) noopWindowPos2svMESA,
   (mapi_func) noopWindowPos3dMESA,
   (mapi_func) noopWindowPos3dvMESA,
   (mapi_func) noopWindowPos3fMESA,
   (mapi_func) noopWindowPos3fvMESA,
   (mapi_func) noopWindowPos3iMESA,
   (mapi_func) noopWindowPos3ivMESA,
   (mapi_func) noopWindowPos3sMESA,
   (mapi_func) noopWindowPos3svMESA,
   (mapi_func) noopWindowPos4dMESA,
   (mapi_func) noopWindowPos4dvMESA,
   (mapi_func) noopWindowPos4fMESA,
   (mapi_func) noopWindowPos4fvMESA,
   (mapi_func) noopWindowPos4iMESA,
   (mapi_func) noopWindowPos4ivMESA,
   (mapi_func) noopWindowPos4sMESA,
   (mapi_func) noopWindowPos4svMESA,
   (mapi_func) noopMultiModeDrawArraysIBM,
   (mapi_func) noopMultiModeDrawElementsIBM,
   (mapi_func) noopAreProgramsResidentNV,
   (mapi_func) noopBindProgramNV,
   (mapi_func) noopDeleteProgramsNV,
   (mapi_func) noopExecuteProgramNV,
   (mapi_func) noopGenProgramsNV,
   (mapi_func) noopGetProgramParameterdvNV,
   (mapi_func) noopGetProgramParameterfvNV,
   (mapi_func) noopGetProgramStringNV,
   (mapi_func) noopGetProgramivNV,
   (mapi_func) noopGetTrackMatrixivNV,
   (mapi_func) noopGetVertexAttribPointervNV,
   (mapi_func) noopGetVertexAttribdvNV,
   (mapi_func) noopGetVertexAttribfvNV,
   (mapi_func) noopGetVertexAttribivNV,
   (mapi_func) noopIsProgramNV,
   (mapi_func) noopLoadProgramNV,
   (mapi_func) noopProgramParameters4dvNV,
   (mapi_func) noopProgramParameters4fvNV,
   (mapi_func) noopRequestResidentProgramsNV,
   (mapi_func) noopTrackMatrixNV,
   (mapi_func) noopVertexAttrib1dNV,
   (mapi_func) noopVertexAttrib1dvNV,
   (mapi_func) noopVertexAttrib1fNV,
   (mapi_func) noopVertexAttrib1fvNV,
   (mapi_func) noopVertexAttrib1sNV,
   (mapi_func) noopVertexAttrib1svNV,
   (mapi_func) noopVertexAttrib2dNV,
   (mapi_func) noopVertexAttrib2dvNV,
   (mapi_func) noopVertexAttrib2fNV,
   (mapi_func) noopVertexAttrib2fvNV,
   (mapi_func) noopVertexAttrib2sNV,
   (mapi_func) noopVertexAttrib2svNV,
   (mapi_func) noopVertexAttrib3dNV,
   (mapi_func) noopVertexAttrib3dvNV,
   (mapi_func) noopVertexAttrib3fNV,
   (mapi_func) noopVertexAttrib3fvNV,
   (mapi_func) noopVertexAttrib3sNV,
   (mapi_func) noopVertexAttrib3svNV,
   (mapi_func) noopVertexAttrib4dNV,
   (mapi_func) noopVertexAttrib4dvNV,
   (mapi_func) noopVertexAttrib4fNV,
   (mapi_func) noopVertexAttrib4fvNV,
   (mapi_func) noopVertexAttrib4sNV,
   (mapi_func) noopVertexAttrib4svNV,
   (mapi_func) noopVertexAttrib4ubNV,
   (mapi_func) noopVertexAttrib4ubvNV,
   (mapi_func) noopVertexAttribPointerNV,
   (mapi_func) noopVertexAttribs1dvNV,
   (mapi_func) noopVertexAttribs1fvNV,
   (mapi_func) noopVertexAttribs1svNV,
   (mapi_func) noopVertexAttribs2dvNV,
   (mapi_func) noopVertexAttribs2fvNV,
   (mapi_func) noopVertexAttribs2svNV,
   (mapi_func) noopVertexAttribs3dvNV,
   (mapi_func) noopVertexAttribs3fvNV,
   (mapi_func) noopVertexAttribs3svNV,
   (mapi_func) noopVertexAttribs4dvNV,
   (mapi_func) noopVertexAttribs4fvNV,
   (mapi_func) noopVertexAttribs4svNV,
   (mapi_func) noopVertexAttribs4ubvNV,
   (mapi_func) noopGetTexBumpParameterfvATI,
   (mapi_func) noopGetTexBumpParameterivATI,
   (mapi_func) noopTexBumpParameterfvATI,
   (mapi_func) noopTexBumpParameterivATI,
   (mapi_func) noopAlphaFragmentOp1ATI,
   (mapi_func) noopAlphaFragmentOp2ATI,
   (mapi_func) noopAlphaFragmentOp3ATI,
   (mapi_func) noopBeginFragmentShaderATI,
   (mapi_func) noopBindFragmentShaderATI,
   (mapi_func) noopColorFragmentOp1ATI,
   (mapi_func) noopColorFragmentOp2ATI,
   (mapi_func) noopColorFragmentOp3ATI,
   (mapi_func) noopDeleteFragmentShaderATI,
   (mapi_func) noopEndFragmentShaderATI,
   (mapi_func) noopGenFragmentShadersATI,
   (mapi_func) noopPassTexCoordATI,
   (mapi_func) noopSampleMapATI,
   (mapi_func) noopSetFragmentShaderConstantATI,
   (mapi_func) noopPointParameteriNV,
   (mapi_func) noopPointParameterivNV,
   (mapi_func) noopActiveStencilFaceEXT,
   (mapi_func) noopBindVertexArrayAPPLE,
   (mapi_func) noopDeleteVertexArraysAPPLE,
   (mapi_func) noopGenVertexArraysAPPLE,
   (mapi_func) noopIsVertexArrayAPPLE,
   (mapi_func) noopGetProgramNamedParameterdvNV,
   (mapi_func) noopGetProgramNamedParameterfvNV,
   (mapi_func) noopProgramNamedParameter4dNV,
   (mapi_func) noopProgramNamedParameter4dvNV,
   (mapi_func) noopProgramNamedParameter4fNV,
   (mapi_func) noopProgramNamedParameter4fvNV,
   (mapi_func) noopPrimitiveRestartIndexNV,
   (mapi_func) noopPrimitiveRestartNV,
   (mapi_func) noopAlphaFuncxOES,
   (mapi_func) noopClearColorxOES,
   (mapi_func) noopClearDepthxOES,
   (mapi_func) noopClipPlanexOES,
   (mapi_func) noopColor4xOES,
   (mapi_func) noopDepthRangexOES,
   (mapi_func) noopFogxOES,
   (mapi_func) noopFogxvOES,
   (mapi_func) noopFrustumxOES,
   (mapi_func) noopGetClipPlanexOES,
   (mapi_func) noopGetFixedvOES,
   (mapi_func) noopGetLightxvOES,
   (mapi_func) noopGetMaterialxvOES,
   (mapi_func) noopGetTexEnvxvOES,
   (mapi_func) noopGetTexGenxvOES,
   (mapi_func) noopGetTexParameterxvOES,
   (mapi_func) noopLightModelxOES,
   (mapi_func) noopLightModelxvOES,
   (mapi_func) noopLightxOES,
   (mapi_func) noopLightxvOES,
   (mapi_func) noopLineWidthxOES,
   (mapi_func) noopLoadMatrixxOES,
   (mapi_func) noopMaterialxOES,
   (mapi_func) noopMaterialxvOES,
   (mapi_func) noopMultMatrixxOES,
   (mapi_func) noopMultiTexCoord4xOES,
   (mapi_func) noopNormal3xOES,
   (mapi_func) noopOrthoxOES,
   (mapi_func) noopPointParameterxOES,
   (mapi_func) noopPointParameterxvOES,
   (mapi_func) noopPointSizexOES,
   (mapi_func) noopPolygonOffsetxOES,
   (mapi_func) noopRotatexOES,
   (mapi_func) noopSampleCoveragexOES,
   (mapi_func) noopScalexOES,
   (mapi_func) noopTexEnvxOES,
   (mapi_func) noopTexEnvxvOES,
   (mapi_func) noopTexGenxOES,
   (mapi_func) noopTexGenxvOES,
   (mapi_func) noopTexParameterxOES,
   (mapi_func) noopTexParameterxvOES,
   (mapi_func) noopTranslatexOES,
   (mapi_func) noopClipPlanefOES,
   (mapi_func) noopFrustumfOES,
   (mapi_func) noopGetClipPlanefOES,
   (mapi_func) noopOrthofOES,
   (mapi_func) noopDepthBoundsEXT,
   (mapi_func) noopBlendEquationSeparateEXT,
   (mapi_func) noopBindFramebufferEXT,
   (mapi_func) noopBindRenderbufferEXT,
   (mapi_func) noopCheckFramebufferStatusEXT,
   (mapi_func) noopDeleteFramebuffersEXT,
   (mapi_func) noopDeleteRenderbuffersEXT,
   (mapi_func) noopFramebufferRenderbufferEXT,
   (mapi_func) noopFramebufferTexture1DEXT,
   (mapi_func) noopFramebufferTexture2DEXT,
   (mapi_func) noopFramebufferTexture3DEXT,
   (mapi_func) noopGenFramebuffersEXT,
   (mapi_func) noopGenRenderbuffersEXT,
   (mapi_func) noopGenerateMipmapEXT,
   (mapi_func) noopGetFramebufferAttachmentParameterivEXT,
   (mapi_func) noopGetRenderbufferParameterivEXT,
   (mapi_func) noopIsFramebufferEXT,
   (mapi_func) noopIsRenderbufferEXT,
   (mapi_func) noopRenderbufferStorageEXT,
   (mapi_func) noopBlitFramebufferEXT,
   (mapi_func) noopBufferParameteriAPPLE,
   (mapi_func) noopFlushMappedBufferRangeAPPLE,
   (mapi_func) noopBindFragDataLocationEXT,
   (mapi_func) noopGetFragDataLocationEXT,
   (mapi_func) noopGetUniformuivEXT,
   (mapi_func) noopGetVertexAttribIivEXT,
   (mapi_func) noopGetVertexAttribIuivEXT,
   (mapi_func) noopUniform1uiEXT,
   (mapi_func) noopUniform1uivEXT,
   (mapi_func) noopUniform2uiEXT,
   (mapi_func) noopUniform2uivEXT,
   (mapi_func) noopUniform3uiEXT,
   (mapi_func) noopUniform3uivEXT,
   (mapi_func) noopUniform4uiEXT,
   (mapi_func) noopUniform4uivEXT,
   (mapi_func) noopVertexAttribI1iEXT,
   (mapi_func) noopVertexAttribI1ivEXT,
   (mapi_func) noopVertexAttribI1uiEXT,
   (mapi_func) noopVertexAttribI1uivEXT,
   (mapi_func) noopVertexAttribI2iEXT,
   (mapi_func) noopVertexAttribI2ivEXT,
   (mapi_func) noopVertexAttribI2uiEXT,
   (mapi_func) noopVertexAttribI2uivEXT,
   (mapi_func) noopVertexAttribI3iEXT,
   (mapi_func) noopVertexAttribI3ivEXT,
   (mapi_func) noopVertexAttribI3uiEXT,
   (mapi_func) noopVertexAttribI3uivEXT,
   (mapi_func) noopVertexAttribI4bvEXT,
   (mapi_func) noopVertexAttribI4iEXT,
   (mapi_func) noopVertexAttribI4ivEXT,
   (mapi_func) noopVertexAttribI4svEXT,
   (mapi_func) noopVertexAttribI4ubvEXT,
   (mapi_func) noopVertexAttribI4uiEXT,
   (mapi_func) noopVertexAttribI4uivEXT,
   (mapi_func) noopVertexAttribI4usvEXT,
   (mapi_func) noopVertexAttribIPointerEXT,
   (mapi_func) noopFramebufferTextureLayerEXT,
   (mapi_func) noopColorMaskIndexedEXT,
   (mapi_func) noopDisableIndexedEXT,
   (mapi_func) noopEnableIndexedEXT,
   (mapi_func) noopGetBooleanIndexedvEXT,
   (mapi_func) noopGetIntegerIndexedvEXT,
   (mapi_func) noopIsEnabledIndexedEXT,
   (mapi_func) noopClearColorIiEXT,
   (mapi_func) noopClearColorIuiEXT,
   (mapi_func) noopGetTexParameterIivEXT,
   (mapi_func) noopGetTexParameterIuivEXT,
   (mapi_func) noopTexParameterIivEXT,
   (mapi_func) noopTexParameterIuivEXT,
   (mapi_func) noopBeginConditionalRenderNV,
   (mapi_func) noopEndConditionalRenderNV,
   (mapi_func) noopBeginTransformFeedbackEXT,
   (mapi_func) noopBindBufferBaseEXT,
   (mapi_func) noopBindBufferOffsetEXT,
   (mapi_func) noopBindBufferRangeEXT,
   (mapi_func) noopEndTransformFeedbackEXT,
   (mapi_func) noopGetTransformFeedbackVaryingEXT,
   (mapi_func) noopTransformFeedbackVaryingsEXT,
   (mapi_func) noopProvokingVertexEXT,
   (mapi_func) noopGetObjectParameterivAPPLE,
   (mapi_func) noopObjectPurgeableAPPLE,
   (mapi_func) noopObjectUnpurgeableAPPLE,
   (mapi_func) noopActiveProgramEXT,
   (mapi_func) noopCreateShaderProgramEXT,
   (mapi_func) noopUseShaderProgramEXT,
   (mapi_func) noopTextureBarrierNV,
   (mapi_func) noopStencilFuncSeparateATI,
   (mapi_func) noopProgramEnvParameters4fvEXT,
   (mapi_func) noopProgramLocalParameters4fvEXT,
   (mapi_func) noopGetQueryObjecti64vEXT,
   (mapi_func) noopGetQueryObjectui64vEXT,
   (mapi_func) noopEGLImageTargetRenderbufferStorageOES,
   (mapi_func) noopEGLImageTargetTexture2DOES,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic
};

#else /* DEBUG */

const mapi_func table_noop_array[] = {
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic,
   (mapi_func) noop_generic
};

#endif /* DEBUG */
#undef MAPI_TMP_NOOP_ARRAY
#endif /* MAPI_TMP_NOOP_ARRAY */

#ifdef MAPI_TMP_PUBLIC_STUBS
static const char public_string_pool[] =
   "Accum\0"
   "ActiveProgramEXT\0"
   "ActiveStencilFaceEXT\0"
   "ActiveTexture\0"
   "ActiveTextureARB\0"
   "AlphaFragmentOp1ATI\0"
   "AlphaFragmentOp2ATI\0"
   "AlphaFragmentOp3ATI\0"
   "AlphaFunc\0"
   "AlphaFuncx\0"
   "AlphaFuncxOES\0"
   "AreProgramsResidentNV\0"
   "AreTexturesResident\0"
   "AreTexturesResidentEXT\0"
   "ArrayElement\0"
   "ArrayElementEXT\0"
   "AttachObjectARB\0"
   "AttachShader\0"
   "Begin\0"
   "BeginConditionalRender\0"
   "BeginConditionalRenderNV\0"
   "BeginFragmentShaderATI\0"
   "BeginQuery\0"
   "BeginQueryARB\0"
   "BeginQueryIndexed\0"
   "BeginTransformFeedback\0"
   "BeginTransformFeedbackEXT\0"
   "BindAttribLocation\0"
   "BindAttribLocationARB\0"
   "BindBuffer\0"
   "BindBufferARB\0"
   "BindBufferBase\0"
   "BindBufferBaseEXT\0"
   "BindBufferOffsetEXT\0"
   "BindBufferRange\0"
   "BindBufferRangeEXT\0"
   "BindFragDataLocation\0"
   "BindFragDataLocationEXT\0"
   "BindFragDataLocationIndexed\0"
   "BindFragmentShaderATI\0"
   "BindFramebuffer\0"
   "BindFramebufferEXT\0"
   "BindFramebufferOES\0"
   "BindProgramARB\0"
   "BindProgramNV\0"
   "BindRenderbuffer\0"
   "BindRenderbufferEXT\0"
   "BindRenderbufferOES\0"
   "BindSampler\0"
   "BindTexture\0"
   "BindTextureEXT\0"
   "BindTransformFeedback\0"
   "BindVertexArray\0"
   "BindVertexArrayAPPLE\0"
   "BindVertexArrayOES\0"
   "Bitmap\0"
   "BlendColor\0"
   "BlendColorEXT\0"
   "BlendEquation\0"
   "BlendEquationEXT\0"
   "BlendEquationIndexedAMD\0"
   "BlendEquationOES\0"
   "BlendEquationSeparate\0"
   "BlendEquationSeparateATI\0"
   "BlendEquationSeparateEXT\0"
   "BlendEquationSeparateIndexedAMD\0"
   "BlendEquationSeparateOES\0"
   "BlendEquationSeparateiARB\0"
   "BlendEquationiARB\0"
   "BlendFunc\0"
   "BlendFuncIndexedAMD\0"
   "BlendFuncSeparate\0"
   "BlendFuncSeparateEXT\0"
   "BlendFuncSeparateINGR\0"
   "BlendFuncSeparateIndexedAMD\0"
   "BlendFuncSeparateOES\0"
   "BlendFuncSeparateiARB\0"
   "BlendFunciARB\0"
   "BlitFramebuffer\0"
   "BlitFramebufferEXT\0"
   "BufferData\0"
   "BufferDataARB\0"
   "BufferParameteriAPPLE\0"
   "BufferSubData\0"
   "BufferSubDataARB\0"
   "CallList\0"
   "CallLists\0"
   "CheckFramebufferStatus\0"
   "CheckFramebufferStatusEXT\0"
   "CheckFramebufferStatusOES\0"
   "ClampColor\0"
   "ClampColorARB\0"
   "Clear\0"
   "ClearAccum\0"
   "ClearBufferfi\0"
   "ClearBufferfv\0"
   "ClearBufferiv\0"
   "ClearBufferuiv\0"
   "ClearColor\0"
   "ClearColorIiEXT\0"
   "ClearColorIuiEXT\0"
   "ClearColorx\0"
   "ClearColorxOES\0"
   "ClearDepth\0"
   "ClearDepthf\0"
   "ClearDepthfOES\0"
   "ClearDepthx\0"
   "ClearDepthxOES\0"
   "ClearIndex\0"
   "ClearStencil\0"
   "ClientActiveTexture\0"
   "ClientActiveTextureARB\0"
   "ClientWaitSync\0"
   "ClipPlane\0"
   "ClipPlanef\0"
   "ClipPlanefOES\0"
   "ClipPlanex\0"
   "ClipPlanexOES\0"
   "Color3b\0"
   "Color3bv\0"
   "Color3d\0"
   "Color3dv\0"
   "Color3f\0"
   "Color3fv\0"
   "Color3i\0"
   "Color3iv\0"
   "Color3s\0"
   "Color3sv\0"
   "Color3ub\0"
   "Color3ubv\0"
   "Color3ui\0"
   "Color3uiv\0"
   "Color3us\0"
   "Color3usv\0"
   "Color4b\0"
   "Color4bv\0"
   "Color4d\0"
   "Color4dv\0"
   "Color4f\0"
   "Color4fv\0"
   "Color4i\0"
   "Color4iv\0"
   "Color4s\0"
   "Color4sv\0"
   "Color4ub\0"
   "Color4ubv\0"
   "Color4ui\0"
   "Color4uiv\0"
   "Color4us\0"
   "Color4usv\0"
   "Color4x\0"
   "Color4xOES\0"
   "ColorFragmentOp1ATI\0"
   "ColorFragmentOp2ATI\0"
   "ColorFragmentOp3ATI\0"
   "ColorMask\0"
   "ColorMaskIndexedEXT\0"
   "ColorMaski\0"
   "ColorMaterial\0"
   "ColorP3ui\0"
   "ColorP3uiv\0"
   "ColorP4ui\0"
   "ColorP4uiv\0"
   "ColorPointer\0"
   "ColorPointerEXT\0"
   "ColorSubTable\0"
   "ColorSubTableEXT\0"
   "ColorTable\0"
   "ColorTableEXT\0"
   "ColorTableParameterfv\0"
   "ColorTableParameterfvSGI\0"
   "ColorTableParameteriv\0"
   "ColorTableParameterivSGI\0"
   "ColorTableSGI\0"
   "CompileShader\0"
   "CompileShaderARB\0"
   "CompressedTexImage1D\0"
   "CompressedTexImage1DARB\0"
   "CompressedTexImage2D\0"
   "CompressedTexImage2DARB\0"
   "CompressedTexImage3D\0"
   "CompressedTexImage3DARB\0"
   "CompressedTexImage3DOES\0"
   "CompressedTexSubImage1D\0"
   "CompressedTexSubImage1DARB\0"
   "CompressedTexSubImage2D\0"
   "CompressedTexSubImage2DARB\0"
   "CompressedTexSubImage3D\0"
   "CompressedTexSubImage3DARB\0"
   "CompressedTexSubImage3DOES\0"
   "ConvolutionFilter1D\0"
   "ConvolutionFilter1DEXT\0"
   "ConvolutionFilter2D\0"
   "ConvolutionFilter2DEXT\0"
   "ConvolutionParameterf\0"
   "ConvolutionParameterfEXT\0"
   "ConvolutionParameterfv\0"
   "ConvolutionParameterfvEXT\0"
   "ConvolutionParameteri\0"
   "ConvolutionParameteriEXT\0"
   "ConvolutionParameteriv\0"
   "ConvolutionParameterivEXT\0"
   "CopyBufferSubData\0"
   "CopyColorSubTable\0"
   "CopyColorSubTableEXT\0"
   "CopyColorTable\0"
   "CopyColorTableSGI\0"
   "CopyConvolutionFilter1D\0"
   "CopyConvolutionFilter1DEXT\0"
   "CopyConvolutionFilter2D\0"
   "CopyConvolutionFilter2DEXT\0"
   "CopyPixels\0"
   "CopyTexImage1D\0"
   "CopyTexImage1DEXT\0"
   "CopyTexImage2D\0"
   "CopyTexImage2DEXT\0"
   "CopyTexSubImage1D\0"
   "CopyTexSubImage1DEXT\0"
   "CopyTexSubImage2D\0"
   "CopyTexSubImage2DEXT\0"
   "CopyTexSubImage3D\0"
   "CopyTexSubImage3DEXT\0"
   "CopyTexSubImage3DOES\0"
   "CreateProgram\0"
   "CreateProgramObjectARB\0"
   "CreateShader\0"
   "CreateShaderObjectARB\0"
   "CreateShaderProgramEXT\0"
   "CullFace\0"
   "DebugMessageCallbackARB\0"
   "DebugMessageControlARB\0"
   "DebugMessageInsertARB\0"
   "DeleteBuffers\0"
   "DeleteBuffersARB\0"
   "DeleteFragmentShaderATI\0"
   "DeleteFramebuffers\0"
   "DeleteFramebuffersEXT\0"
   "DeleteFramebuffersOES\0"
   "DeleteLists\0"
   "DeleteObjectARB\0"
   "DeleteProgram\0"
   "DeleteProgramsARB\0"
   "DeleteProgramsNV\0"
   "DeleteQueries\0"
   "DeleteQueriesARB\0"
   "DeleteRenderbuffers\0"
   "DeleteRenderbuffersEXT\0"
   "DeleteRenderbuffersOES\0"
   "DeleteSamplers\0"
   "DeleteShader\0"
   "DeleteSync\0"
   "DeleteTextures\0"
   "DeleteTexturesEXT\0"
   "DeleteTransformFeedbacks\0"
   "DeleteVertexArrays\0"
   "DeleteVertexArraysAPPLE\0"
   "DeleteVertexArraysOES\0"
   "DepthBoundsEXT\0"
   "DepthFunc\0"
   "DepthMask\0"
   "DepthRange\0"
   "DepthRangef\0"
   "DepthRangefOES\0"
   "DepthRangex\0"
   "DepthRangexOES\0"
   "DetachObjectARB\0"
   "DetachShader\0"
   "Disable\0"
   "DisableClientState\0"
   "DisableIndexedEXT\0"
   "DisableVertexAttribArray\0"
   "DisableVertexAttribArrayARB\0"
   "Disablei\0"
   "DrawArrays\0"
   "DrawArraysEXT\0"
   "DrawArraysInstanced\0"
   "DrawArraysInstancedARB\0"
   "DrawArraysInstancedBaseInstance\0"
   "DrawArraysInstancedEXT\0"
   "DrawBuffer\0"
   "DrawBuffers\0"
   "DrawBuffersARB\0"
   "DrawBuffersATI\0"
   "DrawBuffersNV\0"
   "DrawElements\0"
   "DrawElementsBaseVertex\0"
   "DrawElementsInstanced\0"
   "DrawElementsInstancedARB\0"
   "DrawElementsInstancedBaseInstance\0"
   "DrawElementsInstancedBaseVertex\0"
   "DrawElementsInstancedBaseVertexBaseInstance\0"
   "DrawElementsInstancedEXT\0"
   "DrawPixels\0"
   "DrawRangeElements\0"
   "DrawRangeElementsBaseVertex\0"
   "DrawRangeElementsEXT\0"
   "DrawTexfOES\0"
   "DrawTexfvOES\0"
   "DrawTexiOES\0"
   "DrawTexivOES\0"
   "DrawTexsOES\0"
   "DrawTexsvOES\0"
   "DrawTexxOES\0"
   "DrawTexxvOES\0"
   "DrawTransformFeedback\0"
   "DrawTransformFeedbackInstanced\0"
   "DrawTransformFeedbackStream\0"
   "DrawTransformFeedbackStreamInstanced\0"
   "EGLImageTargetRenderbufferStorageOES\0"
   "EGLImageTargetTexture2DOES\0"
   "EdgeFlag\0"
   "EdgeFlagPointer\0"
   "EdgeFlagPointerEXT\0"
   "EdgeFlagv\0"
   "Enable\0"
   "EnableClientState\0"
   "EnableIndexedEXT\0"
   "EnableVertexAttribArray\0"
   "EnableVertexAttribArrayARB\0"
   "Enablei\0"
   "End\0"
   "EndConditionalRender\0"
   "EndConditionalRenderNV\0"
   "EndFragmentShaderATI\0"
   "EndList\0"
   "EndQuery\0"
   "EndQueryARB\0"
   "EndQueryIndexed\0"
   "EndTransformFeedback\0"
   "EndTransformFeedbackEXT\0"
   "EvalCoord1d\0"
   "EvalCoord1dv\0"
   "EvalCoord1f\0"
   "EvalCoord1fv\0"
   "EvalCoord2d\0"
   "EvalCoord2dv\0"
   "EvalCoord2f\0"
   "EvalCoord2fv\0"
   "EvalMesh1\0"
   "EvalMesh2\0"
   "EvalPoint1\0"
   "EvalPoint2\0"
   "ExecuteProgramNV\0"
   "FeedbackBuffer\0"
   "FenceSync\0"
   "Finish\0"
   "Flush\0"
   "FlushMappedBufferRange\0"
   "FlushMappedBufferRangeAPPLE\0"
   "FogCoordPointer\0"
   "FogCoordPointerEXT\0"
   "FogCoordd\0"
   "FogCoorddEXT\0"
   "FogCoorddv\0"
   "FogCoorddvEXT\0"
   "FogCoordf\0"
   "FogCoordfEXT\0"
   "FogCoordfv\0"
   "FogCoordfvEXT\0"
   "Fogf\0"
   "Fogfv\0"
   "Fogi\0"
   "Fogiv\0"
   "Fogx\0"
   "FogxOES\0"
   "Fogxv\0"
   "FogxvOES\0"
   "FramebufferRenderbuffer\0"
   "FramebufferRenderbufferEXT\0"
   "FramebufferRenderbufferOES\0"
   "FramebufferTexture\0"
   "FramebufferTexture1D\0"
   "FramebufferTexture1DEXT\0"
   "FramebufferTexture2D\0"
   "FramebufferTexture2DEXT\0"
   "FramebufferTexture2DOES\0"
   "FramebufferTexture3D\0"
   "FramebufferTexture3DEXT\0"
   "FramebufferTexture3DOES\0"
   "FramebufferTextureARB\0"
   "FramebufferTextureFaceARB\0"
   "FramebufferTextureLayer\0"
   "FramebufferTextureLayerARB\0"
   "FramebufferTextureLayerEXT\0"
   "FrontFace\0"
   "Frustum\0"
   "Frustumf\0"
   "FrustumfOES\0"
   "Frustumx\0"
   "FrustumxOES\0"
   "GenBuffers\0"
   "GenBuffersARB\0"
   "GenFragmentShadersATI\0"
   "GenFramebuffers\0"
   "GenFramebuffersEXT\0"
   "GenFramebuffersOES\0"
   "GenLists\0"
   "GenProgramsARB\0"
   "GenProgramsNV\0"
   "GenQueries\0"
   "GenQueriesARB\0"
   "GenRenderbuffers\0"
   "GenRenderbuffersEXT\0"
   "GenRenderbuffersOES\0"
   "GenSamplers\0"
   "GenTextures\0"
   "GenTexturesEXT\0"
   "GenTransformFeedbacks\0"
   "GenVertexArrays\0"
   "GenVertexArraysAPPLE\0"
   "GenVertexArraysOES\0"
   "GenerateMipmap\0"
   "GenerateMipmapEXT\0"
   "GenerateMipmapOES\0"
   "GetActiveAttrib\0"
   "GetActiveAttribARB\0"
   "GetActiveUniform\0"
   "GetActiveUniformARB\0"
   "GetActiveUniformBlockName\0"
   "GetActiveUniformBlockiv\0"
   "GetActiveUniformName\0"
   "GetActiveUniformsiv\0"
   "GetAttachedObjectsARB\0"
   "GetAttachedShaders\0"
   "GetAttribLocation\0"
   "GetAttribLocationARB\0"
   "GetBooleanIndexedvEXT\0"
   "GetBooleani_v\0"
   "GetBooleanv\0"
   "GetBufferParameteri64v\0"
   "GetBufferParameteriv\0"
   "GetBufferParameterivARB\0"
   "GetBufferPointerv\0"
   "GetBufferPointervARB\0"
   "GetBufferPointervOES\0"
   "GetBufferSubData\0"
   "GetBufferSubDataARB\0"
   "GetClipPlane\0"
   "GetClipPlanef\0"
   "GetClipPlanefOES\0"
   "GetClipPlanex\0"
   "GetClipPlanexOES\0"
   "GetColorTable\0"
   "GetColorTableEXT\0"
   "GetColorTableParameterfv\0"
   "GetColorTableParameterfvEXT\0"
   "GetColorTableParameterfvSGI\0"
   "GetColorTableParameteriv\0"
   "GetColorTableParameterivEXT\0"
   "GetColorTableParameterivSGI\0"
   "GetColorTableSGI\0"
   "GetCompressedTexImage\0"
   "GetCompressedTexImageARB\0"
   "GetConvolutionFilter\0"
   "GetConvolutionFilterEXT\0"
   "GetConvolutionParameterfv\0"
   "GetConvolutionParameterfvEXT\0"
   "GetConvolutionParameteriv\0"
   "GetConvolutionParameterivEXT\0"
   "GetDebugMessageLogARB\0"
   "GetDoublev\0"
   "GetError\0"
   "GetFixedv\0"
   "GetFixedvOES\0"
   "GetFloatv\0"
   "GetFragDataIndex\0"
   "GetFragDataLocation\0"
   "GetFragDataLocationEXT\0"
   "GetFramebufferAttachmentParameteriv\0"
   "GetFramebufferAttachmentParameterivEXT\0"
   "GetFramebufferAttachmentParameterivOES\0"
   "GetGraphicsResetStatusARB\0"
   "GetHandleARB\0"
   "GetHistogram\0"
   "GetHistogramEXT\0"
   "GetHistogramParameterfv\0"
   "GetHistogramParameterfvEXT\0"
   "GetHistogramParameteriv\0"
   "GetHistogramParameterivEXT\0"
   "GetInfoLogARB\0"
   "GetInteger64i_v\0"
   "GetInteger64v\0"
   "GetIntegerIndexedvEXT\0"
   "GetIntegeri_v\0"
   "GetIntegerv\0"
   "GetLightfv\0"
   "GetLightiv\0"
   "GetLightxv\0"
   "GetLightxvOES\0"
   "GetMapdv\0"
   "GetMapfv\0"
   "GetMapiv\0"
   "GetMaterialfv\0"
   "GetMaterialiv\0"
   "GetMaterialxv\0"
   "GetMaterialxvOES\0"
   "GetMinmax\0"
   "GetMinmaxEXT\0"
   "GetMinmaxParameterfv\0"
   "GetMinmaxParameterfvEXT\0"
   "GetMinmaxParameteriv\0"
   "GetMinmaxParameterivEXT\0"
   "GetObjectParameterfvARB\0"
   "GetObjectParameterivAPPLE\0"
   "GetObjectParameterivARB\0"
   "GetPixelMapfv\0"
   "GetPixelMapuiv\0"
   "GetPixelMapusv\0"
   "GetPointerv\0"
   "GetPointervEXT\0"
   "GetPolygonStipple\0"
   "GetProgramBinary\0"
   "GetProgramBinaryOES\0"
   "GetProgramEnvParameterdvARB\0"
   "GetProgramEnvParameterfvARB\0"
   "GetProgramInfoLog\0"
   "GetProgramLocalParameterdvARB\0"
   "GetProgramLocalParameterfvARB\0"
   "GetProgramNamedParameterdvNV\0"
   "GetProgramNamedParameterfvNV\0"
   "GetProgramParameterdvNV\0"
   "GetProgramParameterfvNV\0"
   "GetProgramStringARB\0"
   "GetProgramStringNV\0"
   "GetProgramiv\0"
   "GetProgramivARB\0"
   "GetProgramivNV\0"
   "GetQueryIndexediv\0"
   "GetQueryObjecti64v\0"
   "GetQueryObjecti64vEXT\0"
   "GetQueryObjectiv\0"
   "GetQueryObjectivARB\0"
   "GetQueryObjectui64v\0"
   "GetQueryObjectui64vEXT\0"
   "GetQueryObjectuiv\0"
   "GetQueryObjectuivARB\0"
   "GetQueryiv\0"
   "GetQueryivARB\0"
   "GetRenderbufferParameteriv\0"
   "GetRenderbufferParameterivEXT\0"
   "GetRenderbufferParameterivOES\0"
   "GetSamplerParameterIiv\0"
   "GetSamplerParameterIuiv\0"
   "GetSamplerParameterfv\0"
   "GetSamplerParameteriv\0"
   "GetSeparableFilter\0"
   "GetSeparableFilterEXT\0"
   "GetShaderInfoLog\0"
   "GetShaderPrecisionFormat\0"
   "GetShaderSource\0"
   "GetShaderSourceARB\0"
   "GetShaderiv\0"
   "GetString\0"
   "GetStringi\0"
   "GetSynciv\0"
   "GetTexBumpParameterfvATI\0"
   "GetTexBumpParameterivATI\0"
   "GetTexEnvfv\0"
   "GetTexEnviv\0"
   "GetTexEnvxv\0"
   "GetTexEnvxvOES\0"
   "GetTexGendv\0"
   "GetTexGenfv\0"
   "GetTexGenfvOES\0"
   "GetTexGeniv\0"
   "GetTexGenivOES\0"
   "GetTexGenxvOES\0"
   "GetTexImage\0"
   "GetTexLevelParameterfv\0"
   "GetTexLevelParameteriv\0"
   "GetTexParameterIiv\0"
   "GetTexParameterIivEXT\0"
   "GetTexParameterIuiv\0"
   "GetTexParameterIuivEXT\0"
   "GetTexParameterfv\0"
   "GetTexParameteriv\0"
   "GetTexParameterxv\0"
   "GetTexParameterxvOES\0"
   "GetTrackMatrixivNV\0"
   "GetTransformFeedbackVarying\0"
   "GetTransformFeedbackVaryingEXT\0"
   "GetUniformBlockIndex\0"
   "GetUniformIndices\0"
   "GetUniformLocation\0"
   "GetUniformLocationARB\0"
   "GetUniformfv\0"
   "GetUniformfvARB\0"
   "GetUniformiv\0"
   "GetUniformivARB\0"
   "GetUniformuiv\0"
   "GetUniformuivEXT\0"
   "GetVertexAttribIiv\0"
   "GetVertexAttribIivEXT\0"
   "GetVertexAttribIuiv\0"
   "GetVertexAttribIuivEXT\0"
   "GetVertexAttribPointerv\0"
   "GetVertexAttribPointervARB\0"
   "GetVertexAttribPointervNV\0"
   "GetVertexAttribdv\0"
   "GetVertexAttribdvARB\0"
   "GetVertexAttribdvNV\0"
   "GetVertexAttribfv\0"
   "GetVertexAttribfvARB\0"
   "GetVertexAttribfvNV\0"
   "GetVertexAttribiv\0"
   "GetVertexAttribivARB\0"
   "GetVertexAttribivNV\0"
   "GetnColorTableARB\0"
   "GetnCompressedTexImageARB\0"
   "GetnConvolutionFilterARB\0"
   "GetnHistogramARB\0"
   "GetnMapdvARB\0"
   "GetnMapfvARB\0"
   "GetnMapivARB\0"
   "GetnMinmaxARB\0"
   "GetnPixelMapfvARB\0"
   "GetnPixelMapuivARB\0"
   "GetnPixelMapusvARB\0"
   "GetnPolygonStippleARB\0"
   "GetnSeparableFilterARB\0"
   "GetnTexImageARB\0"
   "GetnUniformdvARB\0"
   "GetnUniformfvARB\0"
   "GetnUniformivARB\0"
   "GetnUniformuivARB\0"
   "Hint\0"
   "Histogram\0"
   "HistogramEXT\0"
   "IndexMask\0"
   "IndexPointer\0"
   "IndexPointerEXT\0"
   "Indexd\0"
   "Indexdv\0"
   "Indexf\0"
   "Indexfv\0"
   "Indexi\0"
   "Indexiv\0"
   "Indexs\0"
   "Indexsv\0"
   "Indexub\0"
   "Indexubv\0"
   "InitNames\0"
   "InterleavedArrays\0"
   "InvalidateBufferData\0"
   "InvalidateBufferSubData\0"
   "InvalidateFramebuffer\0"
   "InvalidateSubFramebuffer\0"
   "InvalidateTexImage\0"
   "InvalidateTexSubImage\0"
   "IsBuffer\0"
   "IsBufferARB\0"
   "IsEnabled\0"
   "IsEnabledIndexedEXT\0"
   "IsEnabledi\0"
   "IsFramebuffer\0"
   "IsFramebufferEXT\0"
   "IsFramebufferOES\0"
   "IsList\0"
   "IsProgram\0"
   "IsProgramARB\0"
   "IsProgramNV\0"
   "IsQuery\0"
   "IsQueryARB\0"
   "IsRenderbuffer\0"
   "IsRenderbufferEXT\0"
   "IsRenderbufferOES\0"
   "IsSampler\0"
   "IsShader\0"
   "IsSync\0"
   "IsTexture\0"
   "IsTextureEXT\0"
   "IsTransformFeedback\0"
   "IsVertexArray\0"
   "IsVertexArrayAPPLE\0"
   "IsVertexArrayOES\0"
   "LightModelf\0"
   "LightModelfv\0"
   "LightModeli\0"
   "LightModeliv\0"
   "LightModelx\0"
   "LightModelxOES\0"
   "LightModelxv\0"
   "LightModelxvOES\0"
   "Lightf\0"
   "Lightfv\0"
   "Lighti\0"
   "Lightiv\0"
   "Lightx\0"
   "LightxOES\0"
   "Lightxv\0"
   "LightxvOES\0"
   "LineStipple\0"
   "LineWidth\0"
   "LineWidthx\0"
   "LineWidthxOES\0"
   "LinkProgram\0"
   "LinkProgramARB\0"
   "ListBase\0"
   "LoadIdentity\0"
   "LoadMatrixd\0"
   "LoadMatrixf\0"
   "LoadMatrixx\0"
   "LoadMatrixxOES\0"
   "LoadName\0"
   "LoadProgramNV\0"
   "LoadTransposeMatrixd\0"
   "LoadTransposeMatrixdARB\0"
   "LoadTransposeMatrixf\0"
   "LoadTransposeMatrixfARB\0"
   "LockArraysEXT\0"
   "LogicOp\0"
   "Map1d\0"
   "Map1f\0"
   "Map2d\0"
   "Map2f\0"
   "MapBuffer\0"
   "MapBufferARB\0"
   "MapBufferOES\0"
   "MapBufferRange\0"
   "MapGrid1d\0"
   "MapGrid1f\0"
   "MapGrid2d\0"
   "MapGrid2f\0"
   "Materialf\0"
   "Materialfv\0"
   "Materiali\0"
   "Materialiv\0"
   "Materialx\0"
   "MaterialxOES\0"
   "Materialxv\0"
   "MaterialxvOES\0"
   "MatrixMode\0"
   "Minmax\0"
   "MinmaxEXT\0"
   "MultMatrixd\0"
   "MultMatrixf\0"
   "MultMatrixx\0"
   "MultMatrixxOES\0"
   "MultTransposeMatrixd\0"
   "MultTransposeMatrixdARB\0"
   "MultTransposeMatrixf\0"
   "MultTransposeMatrixfARB\0"
   "MultiDrawArrays\0"
   "MultiDrawArraysEXT\0"
   "MultiDrawElements\0"
   "MultiDrawElementsBaseVertex\0"
   "MultiDrawElementsEXT\0"
   "MultiModeDrawArraysIBM\0"
   "MultiModeDrawElementsIBM\0"
   "MultiTexCoord1d\0"
   "MultiTexCoord1dARB\0"
   "MultiTexCoord1dv\0"
   "MultiTexCoord1dvARB\0"
   "MultiTexCoord1f\0"
   "MultiTexCoord1fARB\0"
   "MultiTexCoord1fv\0"
   "MultiTexCoord1fvARB\0"
   "MultiTexCoord1i\0"
   "MultiTexCoord1iARB\0"
   "MultiTexCoord1iv\0"
   "MultiTexCoord1ivARB\0"
   "MultiTexCoord1s\0"
   "MultiTexCoord1sARB\0"
   "MultiTexCoord1sv\0"
   "MultiTexCoord1svARB\0"
   "MultiTexCoord2d\0"
   "MultiTexCoord2dARB\0"
   "MultiTexCoord2dv\0"
   "MultiTexCoord2dvARB\0"
   "MultiTexCoord2f\0"
   "MultiTexCoord2fARB\0"
   "MultiTexCoord2fv\0"
   "MultiTexCoord2fvARB\0"
   "MultiTexCoord2i\0"
   "MultiTexCoord2iARB\0"
   "MultiTexCoord2iv\0"
   "MultiTexCoord2ivARB\0"
   "MultiTexCoord2s\0"
   "MultiTexCoord2sARB\0"
   "MultiTexCoord2sv\0"
   "MultiTexCoord2svARB\0"
   "MultiTexCoord3d\0"
   "MultiTexCoord3dARB\0"
   "MultiTexCoord3dv\0"
   "MultiTexCoord3dvARB\0"
   "MultiTexCoord3f\0"
   "MultiTexCoord3fARB\0"
   "MultiTexCoord3fv\0"
   "MultiTexCoord3fvARB\0"
   "MultiTexCoord3i\0"
   "MultiTexCoord3iARB\0"
   "MultiTexCoord3iv\0"
   "MultiTexCoord3ivARB\0"
   "MultiTexCoord3s\0"
   "MultiTexCoord3sARB\0"
   "MultiTexCoord3sv\0"
   "MultiTexCoord3svARB\0"
   "MultiTexCoord4d\0"
   "MultiTexCoord4dARB\0"
   "MultiTexCoord4dv\0"
   "MultiTexCoord4dvARB\0"
   "MultiTexCoord4f\0"
   "MultiTexCoord4fARB\0"
   "MultiTexCoord4fv\0"
   "MultiTexCoord4fvARB\0"
   "MultiTexCoord4i\0"
   "MultiTexCoord4iARB\0"
   "MultiTexCoord4iv\0"
   "MultiTexCoord4ivARB\0"
   "MultiTexCoord4s\0"
   "MultiTexCoord4sARB\0"
   "MultiTexCoord4sv\0"
   "MultiTexCoord4svARB\0"
   "MultiTexCoord4x\0"
   "MultiTexCoord4xOES\0"
   "MultiTexCoordP1ui\0"
   "MultiTexCoordP1uiv\0"
   "MultiTexCoordP2ui\0"
   "MultiTexCoordP2uiv\0"
   "MultiTexCoordP3ui\0"
   "MultiTexCoordP3uiv\0"
   "MultiTexCoordP4ui\0"
   "MultiTexCoordP4uiv\0"
   "NewList\0"
   "Normal3b\0"
   "Normal3bv\0"
   "Normal3d\0"
   "Normal3dv\0"
   "Normal3f\0"
   "Normal3fv\0"
   "Normal3i\0"
   "Normal3iv\0"
   "Normal3s\0"
   "Normal3sv\0"
   "Normal3x\0"
   "Normal3xOES\0"
   "NormalP3ui\0"
   "NormalP3uiv\0"
   "NormalPointer\0"
   "NormalPointerEXT\0"
   "ObjectPurgeableAPPLE\0"
   "ObjectUnpurgeableAPPLE\0"
   "Ortho\0"
   "Orthof\0"
   "OrthofOES\0"
   "Orthox\0"
   "OrthoxOES\0"
   "PassTexCoordATI\0"
   "PassThrough\0"
   "PauseTransformFeedback\0"
   "PixelMapfv\0"
   "PixelMapuiv\0"
   "PixelMapusv\0"
   "PixelStoref\0"
   "PixelStorei\0"
   "PixelTransferf\0"
   "PixelTransferi\0"
   "PixelZoom\0"
   "PointParameterf\0"
   "PointParameterfARB\0"
   "PointParameterfEXT\0"
   "PointParameterfSGIS\0"
   "PointParameterfv\0"
   "PointParameterfvARB\0"
   "PointParameterfvEXT\0"
   "PointParameterfvSGIS\0"
   "PointParameteri\0"
   "PointParameteriNV\0"
   "PointParameteriv\0"
   "PointParameterivNV\0"
   "PointParameterx\0"
   "PointParameterxOES\0"
   "PointParameterxv\0"
   "PointParameterxvOES\0"
   "PointSize\0"
   "PointSizePointerOES\0"
   "PointSizex\0"
   "PointSizexOES\0"
   "PolygonMode\0"
   "PolygonOffset\0"
   "PolygonOffsetEXT\0"
   "PolygonOffsetx\0"
   "PolygonOffsetxOES\0"
   "PolygonStipple\0"
   "PopAttrib\0"
   "PopClientAttrib\0"
   "PopMatrix\0"
   "PopName\0"
   "PrimitiveRestartIndex\0"
   "PrimitiveRestartIndexNV\0"
   "PrimitiveRestartNV\0"
   "PrioritizeTextures\0"
   "PrioritizeTexturesEXT\0"
   "ProgramBinary\0"
   "ProgramBinaryOES\0"
   "ProgramEnvParameter4dARB\0"
   "ProgramEnvParameter4dvARB\0"
   "ProgramEnvParameter4fARB\0"
   "ProgramEnvParameter4fvARB\0"
   "ProgramEnvParameters4fvEXT\0"
   "ProgramLocalParameter4dARB\0"
   "ProgramLocalParameter4dvARB\0"
   "ProgramLocalParameter4fARB\0"
   "ProgramLocalParameter4fvARB\0"
   "ProgramLocalParameters4fvEXT\0"
   "ProgramNamedParameter4dNV\0"
   "ProgramNamedParameter4dvNV\0"
   "ProgramNamedParameter4fNV\0"
   "ProgramNamedParameter4fvNV\0"
   "ProgramParameter4dNV\0"
   "ProgramParameter4dvNV\0"
   "ProgramParameter4fNV\0"
   "ProgramParameter4fvNV\0"
   "ProgramParameteri\0"
   "ProgramParameteriARB\0"
   "ProgramParameters4dvNV\0"
   "ProgramParameters4fvNV\0"
   "ProgramStringARB\0"
   "ProvokingVertex\0"
   "ProvokingVertexEXT\0"
   "PushAttrib\0"
   "PushClientAttrib\0"
   "PushMatrix\0"
   "PushName\0"
   "QueryCounter\0"
   "QueryMatrixxOES\0"
   "RasterPos2d\0"
   "RasterPos2dv\0"
   "RasterPos2f\0"
   "RasterPos2fv\0"
   "RasterPos2i\0"
   "RasterPos2iv\0"
   "RasterPos2s\0"
   "RasterPos2sv\0"
   "RasterPos3d\0"
   "RasterPos3dv\0"
   "RasterPos3f\0"
   "RasterPos3fv\0"
   "RasterPos3i\0"
   "RasterPos3iv\0"
   "RasterPos3s\0"
   "RasterPos3sv\0"
   "RasterPos4d\0"
   "RasterPos4dv\0"
   "RasterPos4f\0"
   "RasterPos4fv\0"
   "RasterPos4i\0"
   "RasterPos4iv\0"
   "RasterPos4s\0"
   "RasterPos4sv\0"
   "ReadBuffer\0"
   "ReadBufferNV\0"
   "ReadPixels\0"
   "ReadnPixelsARB\0"
   "Rectd\0"
   "Rectdv\0"
   "Rectf\0"
   "Rectfv\0"
   "Recti\0"
   "Rectiv\0"
   "Rects\0"
   "Rectsv\0"
   "ReleaseShaderCompiler\0"
   "RenderMode\0"
   "RenderbufferStorage\0"
   "RenderbufferStorageEXT\0"
   "RenderbufferStorageMultisample\0"
   "RenderbufferStorageMultisampleEXT\0"
   "RenderbufferStorageOES\0"
   "RequestResidentProgramsNV\0"
   "ResetHistogram\0"
   "ResetHistogramEXT\0"
   "ResetMinmax\0"
   "ResetMinmaxEXT\0"
   "ResizeBuffersMESA\0"
   "ResumeTransformFeedback\0"
   "Rotated\0"
   "Rotatef\0"
   "Rotatex\0"
   "RotatexOES\0"
   "SampleCoverage\0"
   "SampleCoverageARB\0"
   "SampleCoveragex\0"
   "SampleCoveragexOES\0"
   "SampleMapATI\0"
   "SampleMaskEXT\0"
   "SampleMaskSGIS\0"
   "SamplePatternEXT\0"
   "SamplePatternSGIS\0"
   "SamplerParameterIiv\0"
   "SamplerParameterIuiv\0"
   "SamplerParameterf\0"
   "SamplerParameterfv\0"
   "SamplerParameteri\0"
   "SamplerParameteriv\0"
   "Scaled\0"
   "Scalef\0"
   "Scalex\0"
   "ScalexOES\0"
   "Scissor\0"
   "SecondaryColor3b\0"
   "SecondaryColor3bEXT\0"
   "SecondaryColor3bv\0"
   "SecondaryColor3bvEXT\0"
   "SecondaryColor3d\0"
   "SecondaryColor3dEXT\0"
   "SecondaryColor3dv\0"
   "SecondaryColor3dvEXT\0"
   "SecondaryColor3f\0"
   "SecondaryColor3fEXT\0"
   "SecondaryColor3fv\0"
   "SecondaryColor3fvEXT\0"
   "SecondaryColor3i\0"
   "SecondaryColor3iEXT\0"
   "SecondaryColor3iv\0"
   "SecondaryColor3ivEXT\0"
   "SecondaryColor3s\0"
   "SecondaryColor3sEXT\0"
   "SecondaryColor3sv\0"
   "SecondaryColor3svEXT\0"
   "SecondaryColor3ub\0"
   "SecondaryColor3ubEXT\0"
   "SecondaryColor3ubv\0"
   "SecondaryColor3ubvEXT\0"
   "SecondaryColor3ui\0"
   "SecondaryColor3uiEXT\0"
   "SecondaryColor3uiv\0"
   "SecondaryColor3uivEXT\0"
   "SecondaryColor3us\0"
   "SecondaryColor3usEXT\0"
   "SecondaryColor3usv\0"
   "SecondaryColor3usvEXT\0"
   "SecondaryColorP3ui\0"
   "SecondaryColorP3uiv\0"
   "SecondaryColorPointer\0"
   "SecondaryColorPointerEXT\0"
   "SelectBuffer\0"
   "SeparableFilter2D\0"
   "SeparableFilter2DEXT\0"
   "SetFragmentShaderConstantATI\0"
   "ShadeModel\0"
   "ShaderBinary\0"
   "ShaderSource\0"
   "ShaderSourceARB\0"
   "StencilFunc\0"
   "StencilFuncSeparate\0"
   "StencilFuncSeparateATI\0"
   "StencilMask\0"
   "StencilMaskSeparate\0"
   "StencilOp\0"
   "StencilOpSeparate\0"
   "StencilOpSeparateATI\0"
   "TexBuffer\0"
   "TexBufferARB\0"
   "TexBumpParameterfvATI\0"
   "TexBumpParameterivATI\0"
   "TexCoord1d\0"
   "TexCoord1dv\0"
   "TexCoord1f\0"
   "TexCoord1fv\0"
   "TexCoord1i\0"
   "TexCoord1iv\0"
   "TexCoord1s\0"
   "TexCoord1sv\0"
   "TexCoord2d\0"
   "TexCoord2dv\0"
   "TexCoord2f\0"
   "TexCoord2fv\0"
   "TexCoord2i\0"
   "TexCoord2iv\0"
   "TexCoord2s\0"
   "TexCoord2sv\0"
   "TexCoord3d\0"
   "TexCoord3dv\0"
   "TexCoord3f\0"
   "TexCoord3fv\0"
   "TexCoord3i\0"
   "TexCoord3iv\0"
   "TexCoord3s\0"
   "TexCoord3sv\0"
   "TexCoord4d\0"
   "TexCoord4dv\0"
   "TexCoord4f\0"
   "TexCoord4fv\0"
   "TexCoord4i\0"
   "TexCoord4iv\0"
   "TexCoord4s\0"
   "TexCoord4sv\0"
   "TexCoordP1ui\0"
   "TexCoordP1uiv\0"
   "TexCoordP2ui\0"
   "TexCoordP2uiv\0"
   "TexCoordP3ui\0"
   "TexCoordP3uiv\0"
   "TexCoordP4ui\0"
   "TexCoordP4uiv\0"
   "TexCoordPointer\0"
   "TexCoordPointerEXT\0"
   "TexEnvf\0"
   "TexEnvfv\0"
   "TexEnvi\0"
   "TexEnviv\0"
   "TexEnvx\0"
   "TexEnvxOES\0"
   "TexEnvxv\0"
   "TexEnvxvOES\0"
   "TexGend\0"
   "TexGendv\0"
   "TexGenf\0"
   "TexGenfOES\0"
   "TexGenfv\0"
   "TexGenfvOES\0"
   "TexGeni\0"
   "TexGeniOES\0"
   "TexGeniv\0"
   "TexGenivOES\0"
   "TexGenxOES\0"
   "TexGenxvOES\0"
   "TexImage1D\0"
   "TexImage2D\0"
   "TexImage3D\0"
   "TexImage3DEXT\0"
   "TexImage3DOES\0"
   "TexParameterIiv\0"
   "TexParameterIivEXT\0"
   "TexParameterIuiv\0"
   "TexParameterIuivEXT\0"
   "TexParameterf\0"
   "TexParameterfv\0"
   "TexParameteri\0"
   "TexParameteriv\0"
   "TexParameterx\0"
   "TexParameterxOES\0"
   "TexParameterxv\0"
   "TexParameterxvOES\0"
   "TexStorage1D\0"
   "TexStorage2D\0"
   "TexStorage3D\0"
   "TexSubImage1D\0"
   "TexSubImage1DEXT\0"
   "TexSubImage2D\0"
   "TexSubImage2DEXT\0"
   "TexSubImage3D\0"
   "TexSubImage3DEXT\0"
   "TexSubImage3DOES\0"
   "TextureBarrierNV\0"
   "TextureStorage1DEXT\0"
   "TextureStorage2DEXT\0"
   "TextureStorage3DEXT\0"
   "TrackMatrixNV\0"
   "TransformFeedbackVaryings\0"
   "TransformFeedbackVaryingsEXT\0"
   "Translated\0"
   "Translatef\0"
   "Translatex\0"
   "TranslatexOES\0"
   "Uniform1f\0"
   "Uniform1fARB\0"
   "Uniform1fv\0"
   "Uniform1fvARB\0"
   "Uniform1i\0"
   "Uniform1iARB\0"
   "Uniform1iv\0"
   "Uniform1ivARB\0"
   "Uniform1ui\0"
   "Uniform1uiEXT\0"
   "Uniform1uiv\0"
   "Uniform1uivEXT\0"
   "Uniform2f\0"
   "Uniform2fARB\0"
   "Uniform2fv\0"
   "Uniform2fvARB\0"
   "Uniform2i\0"
   "Uniform2iARB\0"
   "Uniform2iv\0"
   "Uniform2ivARB\0"
   "Uniform2ui\0"
   "Uniform2uiEXT\0"
   "Uniform2uiv\0"
   "Uniform2uivEXT\0"
   "Uniform3f\0"
   "Uniform3fARB\0"
   "Uniform3fv\0"
   "Uniform3fvARB\0"
   "Uniform3i\0"
   "Uniform3iARB\0"
   "Uniform3iv\0"
   "Uniform3ivARB\0"
   "Uniform3ui\0"
   "Uniform3uiEXT\0"
   "Uniform3uiv\0"
   "Uniform3uivEXT\0"
   "Uniform4f\0"
   "Uniform4fARB\0"
   "Uniform4fv\0"
   "Uniform4fvARB\0"
   "Uniform4i\0"
   "Uniform4iARB\0"
   "Uniform4iv\0"
   "Uniform4ivARB\0"
   "Uniform4ui\0"
   "Uniform4uiEXT\0"
   "Uniform4uiv\0"
   "Uniform4uivEXT\0"
   "UniformBlockBinding\0"
   "UniformMatrix2fv\0"
   "UniformMatrix2fvARB\0"
   "UniformMatrix2x3fv\0"
   "UniformMatrix2x4fv\0"
   "UniformMatrix3fv\0"
   "UniformMatrix3fvARB\0"
   "UniformMatrix3x2fv\0"
   "UniformMatrix3x4fv\0"
   "UniformMatrix4fv\0"
   "UniformMatrix4fvARB\0"
   "UniformMatrix4x2fv\0"
   "UniformMatrix4x3fv\0"
   "UnlockArraysEXT\0"
   "UnmapBuffer\0"
   "UnmapBufferARB\0"
   "UnmapBufferOES\0"
   "UseProgram\0"
   "UseProgramObjectARB\0"
   "UseShaderProgramEXT\0"
   "ValidateProgram\0"
   "ValidateProgramARB\0"
   "Vertex2d\0"
   "Vertex2dv\0"
   "Vertex2f\0"
   "Vertex2fv\0"
   "Vertex2i\0"
   "Vertex2iv\0"
   "Vertex2s\0"
   "Vertex2sv\0"
   "Vertex3d\0"
   "Vertex3dv\0"
   "Vertex3f\0"
   "Vertex3fv\0"
   "Vertex3i\0"
   "Vertex3iv\0"
   "Vertex3s\0"
   "Vertex3sv\0"
   "Vertex4d\0"
   "Vertex4dv\0"
   "Vertex4f\0"
   "Vertex4fv\0"
   "Vertex4i\0"
   "Vertex4iv\0"
   "Vertex4s\0"
   "Vertex4sv\0"
   "VertexAttrib1d\0"
   "VertexAttrib1dARB\0"
   "VertexAttrib1dNV\0"
   "VertexAttrib1dv\0"
   "VertexAttrib1dvARB\0"
   "VertexAttrib1dvNV\0"
   "VertexAttrib1f\0"
   "VertexAttrib1fARB\0"
   "VertexAttrib1fNV\0"
   "VertexAttrib1fv\0"
   "VertexAttrib1fvARB\0"
   "VertexAttrib1fvNV\0"
   "VertexAttrib1s\0"
   "VertexAttrib1sARB\0"
   "VertexAttrib1sNV\0"
   "VertexAttrib1sv\0"
   "VertexAttrib1svARB\0"
   "VertexAttrib1svNV\0"
   "VertexAttrib2d\0"
   "VertexAttrib2dARB\0"
   "VertexAttrib2dNV\0"
   "VertexAttrib2dv\0"
   "VertexAttrib2dvARB\0"
   "VertexAttrib2dvNV\0"
   "VertexAttrib2f\0"
   "VertexAttrib2fARB\0"
   "VertexAttrib2fNV\0"
   "VertexAttrib2fv\0"
   "VertexAttrib2fvARB\0"
   "VertexAttrib2fvNV\0"
   "VertexAttrib2s\0"
   "VertexAttrib2sARB\0"
   "VertexAttrib2sNV\0"
   "VertexAttrib2sv\0"
   "VertexAttrib2svARB\0"
   "VertexAttrib2svNV\0"
   "VertexAttrib3d\0"
   "VertexAttrib3dARB\0"
   "VertexAttrib3dNV\0"
   "VertexAttrib3dv\0"
   "VertexAttrib3dvARB\0"
   "VertexAttrib3dvNV\0"
   "VertexAttrib3f\0"
   "VertexAttrib3fARB\0"
   "VertexAttrib3fNV\0"
   "VertexAttrib3fv\0"
   "VertexAttrib3fvARB\0"
   "VertexAttrib3fvNV\0"
   "VertexAttrib3s\0"
   "VertexAttrib3sARB\0"
   "VertexAttrib3sNV\0"
   "VertexAttrib3sv\0"
   "VertexAttrib3svARB\0"
   "VertexAttrib3svNV\0"
   "VertexAttrib4Nbv\0"
   "VertexAttrib4NbvARB\0"
   "VertexAttrib4Niv\0"
   "VertexAttrib4NivARB\0"
   "VertexAttrib4Nsv\0"
   "VertexAttrib4NsvARB\0"
   "VertexAttrib4Nub\0"
   "VertexAttrib4NubARB\0"
   "VertexAttrib4Nubv\0"
   "VertexAttrib4NubvARB\0"
   "VertexAttrib4Nuiv\0"
   "VertexAttrib4NuivARB\0"
   "VertexAttrib4Nusv\0"
   "VertexAttrib4NusvARB\0"
   "VertexAttrib4bv\0"
   "VertexAttrib4bvARB\0"
   "VertexAttrib4d\0"
   "VertexAttrib4dARB\0"
   "VertexAttrib4dNV\0"
   "VertexAttrib4dv\0"
   "VertexAttrib4dvARB\0"
   "VertexAttrib4dvNV\0"
   "VertexAttrib4f\0"
   "VertexAttrib4fARB\0"
   "VertexAttrib4fNV\0"
   "VertexAttrib4fv\0"
   "VertexAttrib4fvARB\0"
   "VertexAttrib4fvNV\0"
   "VertexAttrib4iv\0"
   "VertexAttrib4ivARB\0"
   "VertexAttrib4s\0"
   "VertexAttrib4sARB\0"
   "VertexAttrib4sNV\0"
   "VertexAttrib4sv\0"
   "VertexAttrib4svARB\0"
   "VertexAttrib4svNV\0"
   "VertexAttrib4ubNV\0"
   "VertexAttrib4ubv\0"
   "VertexAttrib4ubvARB\0"
   "VertexAttrib4ubvNV\0"
   "VertexAttrib4uiv\0"
   "VertexAttrib4uivARB\0"
   "VertexAttrib4usv\0"
   "VertexAttrib4usvARB\0"
   "VertexAttribDivisor\0"
   "VertexAttribDivisorARB\0"
   "VertexAttribI1i\0"
   "VertexAttribI1iEXT\0"
   "VertexAttribI1iv\0"
   "VertexAttribI1ivEXT\0"
   "VertexAttribI1ui\0"
   "VertexAttribI1uiEXT\0"
   "VertexAttribI1uiv\0"
   "VertexAttribI1uivEXT\0"
   "VertexAttribI2i\0"
   "VertexAttribI2iEXT\0"
   "VertexAttribI2iv\0"
   "VertexAttribI2ivEXT\0"
   "VertexAttribI2ui\0"
   "VertexAttribI2uiEXT\0"
   "VertexAttribI2uiv\0"
   "VertexAttribI2uivEXT\0"
   "VertexAttribI3i\0"
   "VertexAttribI3iEXT\0"
   "VertexAttribI3iv\0"
   "VertexAttribI3ivEXT\0"
   "VertexAttribI3ui\0"
   "VertexAttribI3uiEXT\0"
   "VertexAttribI3uiv\0"
   "VertexAttribI3uivEXT\0"
   "VertexAttribI4bv\0"
   "VertexAttribI4bvEXT\0"
   "VertexAttribI4i\0"
   "VertexAttribI4iEXT\0"
   "VertexAttribI4iv\0"
   "VertexAttribI4ivEXT\0"
   "VertexAttribI4sv\0"
   "VertexAttribI4svEXT\0"
   "VertexAttribI4ubv\0"
   "VertexAttribI4ubvEXT\0"
   "VertexAttribI4ui\0"
   "VertexAttribI4uiEXT\0"
   "VertexAttribI4uiv\0"
   "VertexAttribI4uivEXT\0"
   "VertexAttribI4usv\0"
   "VertexAttribI4usvEXT\0"
   "VertexAttribIPointer\0"
   "VertexAttribIPointerEXT\0"
   "VertexAttribP1ui\0"
   "VertexAttribP1uiv\0"
   "VertexAttribP2ui\0"
   "VertexAttribP2uiv\0"
   "VertexAttribP3ui\0"
   "VertexAttribP3uiv\0"
   "VertexAttribP4ui\0"
   "VertexAttribP4uiv\0"
   "VertexAttribPointer\0"
   "VertexAttribPointerARB\0"
   "VertexAttribPointerNV\0"
   "VertexAttribs1dvNV\0"
   "VertexAttribs1fvNV\0"
   "VertexAttribs1svNV\0"
   "VertexAttribs2dvNV\0"
   "VertexAttribs2fvNV\0"
   "VertexAttribs2svNV\0"
   "VertexAttribs3dvNV\0"
   "VertexAttribs3fvNV\0"
   "VertexAttribs3svNV\0"
   "VertexAttribs4dvNV\0"
   "VertexAttribs4fvNV\0"
   "VertexAttribs4svNV\0"
   "VertexAttribs4ubvNV\0"
   "VertexP2ui\0"
   "VertexP2uiv\0"
   "VertexP3ui\0"
   "VertexP3uiv\0"
   "VertexP4ui\0"
   "VertexP4uiv\0"
   "VertexPointer\0"
   "VertexPointerEXT\0"
   "Viewport\0"
   "WaitSync\0"
   "WindowPos2d\0"
   "WindowPos2dARB\0"
   "WindowPos2dMESA\0"
   "WindowPos2dv\0"
   "WindowPos2dvARB\0"
   "WindowPos2dvMESA\0"
   "WindowPos2f\0"
   "WindowPos2fARB\0"
   "WindowPos2fMESA\0"
   "WindowPos2fv\0"
   "WindowPos2fvARB\0"
   "WindowPos2fvMESA\0"
   "WindowPos2i\0"
   "WindowPos2iARB\0"
   "WindowPos2iMESA\0"
   "WindowPos2iv\0"
   "WindowPos2ivARB\0"
   "WindowPos2ivMESA\0"
   "WindowPos2s\0"
   "WindowPos2sARB\0"
   "WindowPos2sMESA\0"
   "WindowPos2sv\0"
   "WindowPos2svARB\0"
   "WindowPos2svMESA\0"
   "WindowPos3d\0"
   "WindowPos3dARB\0"
   "WindowPos3dMESA\0"
   "WindowPos3dv\0"
   "WindowPos3dvARB\0"
   "WindowPos3dvMESA\0"
   "WindowPos3f\0"
   "WindowPos3fARB\0"
   "WindowPos3fMESA\0"
   "WindowPos3fv\0"
   "WindowPos3fvARB\0"
   "WindowPos3fvMESA\0"
   "WindowPos3i\0"
   "WindowPos3iARB\0"
   "WindowPos3iMESA\0"
   "WindowPos3iv\0"
   "WindowPos3ivARB\0"
   "WindowPos3ivMESA\0"
   "WindowPos3s\0"
   "WindowPos3sARB\0"
   "WindowPos3sMESA\0"
   "WindowPos3sv\0"
   "WindowPos3svARB\0"
   "WindowPos3svMESA\0"
   "WindowPos4dMESA\0"
   "WindowPos4dvMESA\0"
   "WindowPos4fMESA\0"
   "WindowPos4fvMESA\0"
   "WindowPos4iMESA\0"
   "WindowPos4ivMESA\0"
   "WindowPos4sMESA\0"
   "WindowPos4svMESA";

static const struct mapi_stub public_stubs[] = {
   { (void *) 0, 213, NULL },
   { (void *) 6, 1018, NULL },
   { (void *) 23, 877, NULL },
   { (void *) 44, 374, NULL },
   { (void *) 58, 374, NULL },
   { (void *) 75, 861, NULL },
   { (void *) 95, 862, NULL },
   { (void *) 115, 863, NULL },
   { (void *) 135, 240, NULL },
   { (void *) 145, 890, NULL },
   { (void *) 156, 890, NULL },
   { (void *) 170, 797, NULL },
   { (void *) 192, 322, NULL },
   { (void *) 212, 322, NULL },
   { (void *) 235, 306, NULL },
   { (void *) 248, 306, NULL },
   { (void *) 264, 528, NULL },
   { (void *) 280, 408, NULL },
   { (void *) 293, 7, NULL },
   { (void *) 299, 1005, NULL },
   { (void *) 322, 1005, NULL },
   { (void *) 347, 864, NULL },
   { (void *) 370, 520, NULL },
   { (void *) 381, 520, NULL },
   { (void *) 395, 669, NULL },
   { (void *) 413, 1007, NULL },
   { (void *) 436, 1007, NULL },
   { (void *) 462, 567, NULL },
   { (void *) 481, 567, NULL },
   { (void *) 503, 509, NULL },
   { (void *) 514, 509, NULL },
   { (void *) 528, 1008, NULL },
   { (void *) 543, 1008, NULL },
   { (void *) 561, 1009, NULL },
   { (void *) 581, 1010, NULL },
   { (void *) 597, 1010, NULL },
   { (void *) 616, 958, NULL },
   { (void *) 637, 958, NULL },
   { (void *) 661, 607, NULL },
   { (void *) 689, 865, NULL },
   { (void *) 711, 938, NULL },
   { (void *) 727, 938, NULL },
   { (void *) 746, 938, NULL },
   { (void *) 765, 798, NULL },
   { (void *) 780, 798, NULL },
   { (void *) 794, 939, NULL },
   { (void *) 811, 939, NULL },
   { (void *) 831, 939, NULL },
   { (void *) 851, 609, NULL },
   { (void *) 863, 307, NULL },
   { (void *) 875, 307, NULL },
   { (void *) 890, 662, NULL },
   { (void *) 912, 582, NULL },
   { (void *) 928, 878, NULL },
   { (void *) 949, 582, NULL },
   { (void *) 968, 8, NULL },
   { (void *) 975, 336, NULL },
   { (void *) 986, 336, NULL },
   { (void *) 1000, 337, NULL },
   { (void *) 1014, 337, NULL },
   { (void *) 1031, 604, NULL },
   { (void *) 1055, 337, NULL },
   { (void *) 1072, 937, NULL },
   { (void *) 1094, 937, NULL },
   { (void *) 1119, 937, NULL },
   { (void *) 1144, 603, NULL },
   { (void *) 1176, 937, NULL },
   { (void *) 1201, 603, NULL },
   { (void *) 1227, 604, NULL },
   { (void *) 1245, 241, NULL },
   { (void *) 1255, 606, NULL },
   { (void *) 1275, 769, NULL },
   { (void *) 1293, 769, NULL },
   { (void *) 1314, 769, NULL },
   { (void *) 1336, 605, NULL },
   { (void *) 1364, 769, NULL },
   { (void *) 1385, 605, NULL },
   { (void *) 1407, 606, NULL },
   { (void *) 1421, 955, NULL },
   { (void *) 1437, 955, NULL },
   { (void *) 1456, 510, NULL },
   { (void *) 1467, 510, NULL },
   { (void *) 1481, 956, NULL },
   { (void *) 1503, 511, NULL },
   { (void *) 1517, 511, NULL },
   { (void *) 1534, 2, NULL },
   { (void *) 1543, 3, NULL },
   { (void *) 1553, 940, NULL },
   { (void *) 1576, 940, NULL },
   { (void *) 1602, 940, NULL },
   { (void *) 1628, 430, NULL },
   { (void *) 1639, 571, NULL },
   { (void *) 1653, 203, NULL },
   { (void *) 1659, 204, NULL },
   { (void *) 1670, 431, NULL },
   { (void *) 1684, 432, NULL },
   { (void *) 1698, 433, NULL },
   { (void *) 1712, 434, NULL },
   { (void *) 1727, 206, NULL },
   { (void *) 1738, 999, NULL },
   { (void *) 1754, 1000, NULL },
   { (void *) 1771, 891, NULL },
   { (void *) 1783, 891, NULL },
   { (void *) 1798, 208, NULL },
   { (void *) 1809, 673, NULL },
   { (void *) 1821, 673, NULL },
   { (void *) 1836, 892, NULL },
   { (void *) 1848, 892, NULL },
   { (void *) 1863, 205, NULL },
   { (void *) 1874, 207, NULL },
   { (void *) 1887, 375, NULL },
   { (void *) 1907, 375, NULL },
   { (void *) 1930, 592, NULL },
   { (void *) 1945, 150, NULL },
   { (void *) 1955, 932, NULL },
   { (void *) 1966, 932, NULL },
   { (void *) 1980, 893, NULL },
   { (void *) 1991, 893, NULL },
   { (void *) 2005, 9, NULL },
   { (void *) 2013, 10, NULL },
   { (void *) 2022, 11, NULL },
   { (void *) 2030, 12, NULL },
   { (void *) 2039, 13, NULL },
   { (void *) 2047, 14, NULL },
   { (void *) 2056, 15, NULL },
   { (void *) 2064, 16, NULL },
   { (void *) 2073, 17, NULL },
   { (void *) 2081, 18, NULL },
   { (void *) 2090, 19, NULL },
   { (void *) 2099, 20, NULL },
   { (void *) 2109, 21, NULL },
   { (void *) 2118, 22, NULL },
   { (void *) 2128, 23, NULL },
   { (void *) 2137, 24, NULL },
   { (void *) 2147, 25, NULL },
   { (void *) 2155, 26, NULL },
   { (void *) 2164, 27, NULL },
   { (void *) 2172, 28, NULL },
   { (void *) 2181, 29, NULL },
   { (void *) 2189, 30, NULL },
   { (void *) 2198, 31, NULL },
   { (void *) 2206, 32, NULL },
   { (void *) 2215, 33, NULL },
   { (void *) 2223, 34, NULL },
   { (void *) 2232, 35, NULL },
   { (void *) 2241, 36, NULL },
   { (void *) 2251, 37, NULL },
   { (void *) 2260, 38, NULL },
   { (void *) 2270, 39, NULL },
   { (void *) 2279, 40, NULL },
   { (void *) 2289, 894, NULL },
   { (void *) 2297, 894, NULL },
   { (void *) 2308, 866, NULL },
   { (void *) 2328, 867, NULL },
   { (void *) 2348, 868, NULL },
   { (void *) 2368, 210, NULL },
   { (void *) 2378, 993, NULL },
   { (void *) 2398, 993, NULL },
   { (void *) 2409, 151, NULL },
   { (void *) 2423, 624, NULL },
   { (void *) 2433, 625, NULL },
   { (void *) 2444, 626, NULL },
   { (void *) 2454, 627, NULL },
   { (void *) 2465, 308, NULL },
   { (void *) 2478, 735, NULL },
   { (void *) 2494, 346, NULL },
   { (void *) 2508, 346, NULL },
   { (void *) 2525, 339, NULL },
   { (void *) 2536, 339, NULL },
   { (void *) 2550, 340, NULL },
   { (void *) 2572, 340, NULL },
   { (void *) 2597, 341, NULL },
   { (void *) 2619, 341, NULL },
   { (void *) 2644, 339, NULL },
   { (void *) 2658, 529, NULL },
   { (void *) 2672, 529, NULL },
   { (void *) 2689, 445, NULL },
   { (void *) 2710, 445, NULL },
   { (void *) 2734, 446, NULL },
   { (void *) 2755, 446, NULL },
   { (void *) 2779, 447, NULL },
   { (void *) 2800, 447, NULL },
   { (void *) 2824, 447, NULL },
   { (void *) 2848, 448, NULL },
   { (void *) 2872, 448, NULL },
   { (void *) 2899, 449, NULL },
   { (void *) 2923, 449, NULL },
   { (void *) 2950, 450, NULL },
   { (void *) 2974, 450, NULL },
   { (void *) 3001, 450, NULL },
   { (void *) 3028, 348, NULL },
   { (void *) 3048, 348, NULL },
   { (void *) 3071, 349, NULL },
   { (void *) 3091, 349, NULL },
   { (void *) 3114, 350, NULL },
   { (void *) 3136, 350, NULL },
   { (void *) 3161, 351, NULL },
   { (void *) 3184, 351, NULL },
   { (void *) 3210, 352, NULL },
   { (void *) 3232, 352, NULL },
   { (void *) 3257, 353, NULL },
   { (void *) 3280, 353, NULL },
   { (void *) 3306, 591, NULL },
   { (void *) 3324, 347, NULL },
   { (void *) 3342, 347, NULL },
   { (void *) 3363, 342, NULL },
   { (void *) 3378, 342, NULL },
   { (void *) 3396, 354, NULL },
   { (void *) 3420, 354, NULL },
   { (void *) 3447, 355, NULL },
   { (void *) 3471, 355, NULL },
   { (void *) 3498, 255, NULL },
   { (void *) 3509, 323, NULL },
   { (void *) 3524, 323, NULL },
   { (void *) 3542, 324, NULL },
   { (void *) 3557, 324, NULL },
   { (void *) 3575, 325, NULL },
   { (void *) 3593, 325, NULL },
   { (void *) 3614, 326, NULL },
   { (void *) 3632, 326, NULL },
   { (void *) 3653, 373, NULL },
   { (void *) 3671, 373, NULL },
   { (void *) 3692, 373, NULL },
   { (void *) 3713, 409, NULL },
   { (void *) 3727, 530, NULL },
   { (void *) 3750, 410, NULL },
   { (void *) 3763, 531, NULL },
   { (void *) 3785, 1019, NULL },
   { (void *) 3808, 152, NULL },
   { (void *) 3817, 681, NULL },
   { (void *) 3841, 682, NULL },
   { (void *) 3864, 683, NULL },
   { (void *) 3886, 512, NULL },
   { (void *) 3900, 512, NULL },
   { (void *) 3917, 869, NULL },
   { (void *) 3941, 941, NULL },
   { (void *) 3960, 941, NULL },
   { (void *) 3982, 941, NULL },
   { (void *) 4004, 4, NULL },
   { (void *) 4016, 532, NULL },
   { (void *) 4032, 411, NULL },
   { (void *) 4046, 799, NULL },
   { (void *) 4064, 799, NULL },
   { (void *) 4081, 521, NULL },
   { (void *) 4095, 521, NULL },
   { (void *) 4112, 942, NULL },
   { (void *) 4132, 942, NULL },
   { (void *) 4155, 942, NULL },
   { (void *) 4178, 610, NULL },
   { (void *) 4193, 412, NULL },
   { (void *) 4206, 593, NULL },
   { (void *) 4217, 327, NULL },
   { (void *) 4232, 327, NULL },
   { (void *) 4250, 663, NULL },
   { (void *) 4275, 879, NULL },
   { (void *) 4294, 879, NULL },
   { (void *) 4318, 879, NULL },
   { (void *) 4340, 936, NULL },
   { (void *) 4355, 245, NULL },
   { (void *) 4365, 211, NULL },
   { (void *) 4375, 288, NULL },
   { (void *) 4386, 674, NULL },
   { (void *) 4398, 674, NULL },
   { (void *) 4413, 895, NULL },
   { (void *) 4425, 895, NULL },
   { (void *) 4440, 533, NULL },
   { (void *) 4456, 413, NULL },
   { (void *) 4469, 214, NULL },
   { (void *) 4477, 309, NULL },
   { (void *) 4496, 994, NULL },
   { (void *) 4514, 452, NULL },
   { (void *) 4539, 452, NULL },
   { (void *) 4567, 994, NULL },
   { (void *) 4576, 310, NULL },
   { (void *) 4587, 310, NULL },
   { (void *) 4601, 572, NULL },
   { (void *) 4621, 572, NULL },
   { (void *) 4644, 705, NULL },
   { (void *) 4676, 572, NULL },
   { (void *) 4699, 202, NULL },
   { (void *) 4710, 570, NULL },
   { (void *) 4722, 570, NULL },
   { (void *) 4737, 570, NULL },
   { (void *) 4752, 570, NULL },
   { (void *) 4766, 311, NULL },
   { (void *) 4779, 599, NULL },
   { (void *) 4802, 573, NULL },
   { (void *) 4824, 573, NULL },
   { (void *) 4849, 706, NULL },
   { (void *) 4883, 600, NULL },
   { (void *) 4915, 707, NULL },
   { (void *) 4959, 573, NULL },
   { (void *) 4984, 257, NULL },
   { (void *) 4995, 338, NULL },
   { (void *) 5013, 601, NULL },
   { (void *) 5041, 338, NULL },
   { (void *) 5062, 723, NULL },
   { (void *) 5074, 724, NULL },
   { (void *) 5087, 725, NULL },
   { (void *) 5099, 726, NULL },
   { (void *) 5112, 727, NULL },
   { (void *) 5124, 728, NULL },
   { (void *) 5137, 729, NULL },
   { (void *) 5149, 730, NULL },
   { (void *) 5162, 664, NULL },
   { (void *) 5184, 708, NULL },
   { (void *) 5215, 670, NULL },
   { (void *) 5243, 709, NULL },
   { (void *) 5280, 1027, NULL },
   { (void *) 5317, 1028, NULL },
   { (void *) 5344, 41, NULL },
   { (void *) 5353, 312, NULL },
   { (void *) 5369, 736, NULL },
   { (void *) 5388, 42, NULL },
   { (void *) 5398, 215, NULL },
   { (void *) 5405, 313, NULL },
   { (void *) 5423, 995, NULL },
   { (void *) 5440, 453, NULL },
   { (void *) 5464, 453, NULL },
   { (void *) 5491, 995, NULL },
   { (void *) 5499, 43, NULL },
   { (void *) 5503, 1006, NULL },
   { (void *) 5524, 1006, NULL },
   { (void *) 5547, 870, NULL },
   { (void *) 5568, 1, NULL },
   { (void *) 5576, 522, NULL },
   { (void *) 5585, 522, NULL },
   { (void *) 5597, 671, NULL },
   { (void *) 5613, 1011, NULL },
   { (void *) 5634, 1011, NULL },
   { (void *) 5658, 228, NULL },
   { (void *) 5670, 229, NULL },
   { (void *) 5683, 230, NULL },
   { (void *) 5695, 231, NULL },
   { (void *) 5708, 232, NULL },
   { (void *) 5720, 233, NULL },
   { (void *) 5733, 234, NULL },
   { (void *) 5745, 235, NULL },
   { (void *) 5758, 236, NULL },
   { (void *) 5768, 238, NULL },
   { (void *) 5778, 237, NULL },
   { (void *) 5789, 239, NULL },
   { (void *) 5800, 800, NULL },
   { (void *) 5817, 194, NULL },
   { (void *) 5832, 594, NULL },
   { (void *) 5842, 216, NULL },
   { (void *) 5849, 217, NULL },
   { (void *) 5855, 579, NULL },
   { (void *) 5878, 957, NULL },
   { (void *) 5906, 764, NULL },
   { (void *) 5922, 764, NULL },
   { (void *) 5941, 765, NULL },
   { (void *) 5951, 765, NULL },
   { (void *) 5964, 766, NULL },
   { (void *) 5975, 766, NULL },
   { (void *) 5989, 767, NULL },
   { (void *) 5999, 767, NULL },
   { (void *) 6012, 768, NULL },
   { (void *) 6023, 768, NULL },
   { (void *) 6037, 153, NULL },
   { (void *) 6042, 154, NULL },
   { (void *) 6048, 155, NULL },
   { (void *) 6053, 156, NULL },
   { (void *) 6059, 896, NULL },
   { (void *) 6064, 896, NULL },
   { (void *) 6072, 897, NULL },
   { (void *) 6078, 897, NULL },
   { (void *) 6087, 943, NULL },
   { (void *) 6111, 943, NULL },
   { (void *) 6138, 943, NULL },
   { (void *) 6165, 436, NULL },
   { (void *) 6184, 944, NULL },
   { (void *) 6205, 944, NULL },
   { (void *) 6229, 945, NULL },
   { (void *) 6250, 945, NULL },
   { (void *) 6274, 945, NULL },
   { (void *) 6298, 946, NULL },
   { (void *) 6319, 946, NULL },
   { (void *) 6343, 946, NULL },
   { (void *) 6367, 575, NULL },
   { (void *) 6389, 576, NULL },
   { (void *) 6415, 992, NULL },
   { (void *) 6439, 992, NULL },
   { (void *) 6466, 992, NULL },
   { (void *) 6493, 157, NULL },
   { (void *) 6503, 289, NULL },
   { (void *) 6511, 933, NULL },
   { (void *) 6520, 933, NULL },
   { (void *) 6532, 898, NULL },
   { (void *) 6541, 898, NULL },
   { (void *) 6553, 513, NULL },
   { (void *) 6564, 513, NULL },
   { (void *) 6578, 871, NULL },
   { (void *) 6600, 947, NULL },
   { (void *) 6616, 947, NULL },
   { (void *) 6635, 947, NULL },
   { (void *) 6654, 5, NULL },
   { (void *) 6663, 801, NULL },
   { (void *) 6678, 801, NULL },
   { (void *) 6692, 523, NULL },
   { (void *) 6703, 523, NULL },
   { (void *) 6717, 948, NULL },
   { (void *) 6734, 948, NULL },
   { (void *) 6754, 948, NULL },
   { (void *) 6774, 611, NULL },
   { (void *) 6786, 328, NULL },
   { (void *) 6798, 328, NULL },
   { (void *) 6813, 665, NULL },
   { (void *) 6835, 583, NULL },
   { (void *) 6851, 880, NULL },
   { (void *) 6872, 583, NULL },
   { (void *) 6891, 949, NULL },
   { (void *) 6906, 949, NULL },
   { (void *) 6924, 949, NULL },
   { (void *) 6942, 568, NULL },
   { (void *) 6958, 568, NULL },
   { (void *) 6977, 534, NULL },
   { (void *) 6994, 534, NULL },
   { (void *) 7014, 584, NULL },
   { (void *) 7040, 585, NULL },
   { (void *) 7064, 586, NULL },
   { (void *) 7085, 587, NULL },
   { (void *) 7105, 535, NULL },
   { (void *) 7127, 414, NULL },
   { (void *) 7146, 569, NULL },
   { (void *) 7164, 569, NULL },
   { (void *) 7185, 996, NULL },
   { (void *) 7207, 996, NULL },
   { (void *) 7221, 258, NULL },
   { (void *) 7233, 437, NULL },
   { (void *) 7256, 514, NULL },
   { (void *) 7277, 514, NULL },
   { (void *) 7301, 515, NULL },
   { (void *) 7319, 515, NULL },
   { (void *) 7340, 515, NULL },
   { (void *) 7361, 516, NULL },
   { (void *) 7378, 516, NULL },
   { (void *) 7398, 259, NULL },
   { (void *) 7411, 934, NULL },
   { (void *) 7425, 934, NULL },
   { (void *) 7442, 899, NULL },
   { (void *) 7456, 899, NULL },
   { (void *) 7473, 343, NULL },
   { (void *) 7487, 343, NULL },
   { (void *) 7504, 344, NULL },
   { (void *) 7529, 344, NULL },
   { (void *) 7557, 344, NULL },
   { (void *) 7585, 345, NULL },
   { (void *) 7610, 345, NULL },
   { (void *) 7638, 345, NULL },
   { (void *) 7666, 343, NULL },
   { (void *) 7683, 451, NULL },
   { (void *) 7705, 451, NULL },
   { (void *) 7730, 356, NULL },
   { (void *) 7751, 356, NULL },
   { (void *) 7775, 357, NULL },
   { (void *) 7801, 357, NULL },
   { (void *) 7830, 358, NULL },
   { (void *) 7856, 358, NULL },
   { (void *) 7885, 684, NULL },
   { (void *) 7907, 260, NULL },
   { (void *) 7918, 261, NULL },
   { (void *) 7927, 900, NULL },
   { (void *) 7937, 900, NULL },
   { (void *) 7950, 262, NULL },
   { (void *) 7960, 608, NULL },
   { (void *) 7977, 959, NULL },
   { (void *) 7997, 959, NULL },
   { (void *) 8020, 950, NULL },
   { (void *) 8056, 950, NULL },
   { (void *) 8095, 950, NULL },
   { (void *) 8134, 685, NULL },
   { (void *) 8160, 536, NULL },
   { (void *) 8173, 361, NULL },
   { (void *) 8186, 361, NULL },
   { (void *) 8202, 362, NULL },
   { (void *) 8226, 362, NULL },
   { (void *) 8253, 363, NULL },
   { (void *) 8277, 363, NULL },
   { (void *) 8304, 537, NULL },
   { (void *) 8318, 438, NULL },
   { (void *) 8334, 595, NULL },
   { (void *) 8348, 997, NULL },
   { (void *) 8370, 997, NULL },
   { (void *) 8384, 263, NULL },
   { (void *) 8396, 264, NULL },
   { (void *) 8407, 265, NULL },
   { (void *) 8418, 901, NULL },
   { (void *) 8429, 901, NULL },
   { (void *) 8443, 266, NULL },
   { (void *) 8452, 267, NULL },
   { (void *) 8461, 268, NULL },
   { (void *) 8470, 269, NULL },
   { (void *) 8484, 270, NULL },
   { (void *) 8498, 902, NULL },
   { (void *) 8512, 902, NULL },
   { (void *) 8529, 364, NULL },
   { (void *) 8539, 364, NULL },
   { (void *) 8552, 365, NULL },
   { (void *) 8573, 365, NULL },
   { (void *) 8597, 366, NULL },
   { (void *) 8618, 366, NULL },
   { (void *) 8642, 538, NULL },
   { (void *) 8666, 1015, NULL },
   { (void *) 8692, 539, NULL },
   { (void *) 8716, 271, NULL },
   { (void *) 8730, 272, NULL },
   { (void *) 8745, 273, NULL },
   { (void *) 8760, 329, NULL },
   { (void *) 8772, 329, NULL },
   { (void *) 8787, 274, NULL },
   { (void *) 8805, 678, NULL },
   { (void *) 8822, 678, NULL },
   { (void *) 8842, 454, NULL },
   { (void *) 8870, 455, NULL },
   { (void *) 8898, 415, NULL },
   { (void *) 8916, 456, NULL },
   { (void *) 8946, 457, NULL },
   { (void *) 8976, 882, NULL },
   { (void *) 9005, 883, NULL },
   { (void *) 9034, 802, NULL },
   { (void *) 9058, 803, NULL },
   { (void *) 9082, 458, NULL },
   { (void *) 9102, 804, NULL },
   { (void *) 9121, 416, NULL },
   { (void *) 9134, 459, NULL },
   { (void *) 9150, 805, NULL },
   { (void *) 9165, 672, NULL },
   { (void *) 9183, 1025, NULL },
   { (void *) 9202, 1025, NULL },
   { (void *) 9224, 524, NULL },
   { (void *) 9241, 524, NULL },
   { (void *) 9261, 1026, NULL },
   { (void *) 9281, 1026, NULL },
   { (void *) 9304, 525, NULL },
   { (void *) 9322, 525, NULL },
   { (void *) 9343, 526, NULL },
   { (void *) 9354, 526, NULL },
   { (void *) 9368, 951, NULL },
   { (void *) 9395, 951, NULL },
   { (void *) 9425, 951, NULL },
   { (void *) 9455, 612, NULL },
   { (void *) 9478, 613, NULL },
   { (void *) 9502, 614, NULL },
   { (void *) 9524, 615, NULL },
   { (void *) 9546, 359, NULL },
   { (void *) 9565, 359, NULL },
   { (void *) 9587, 417, NULL },
   { (void *) 9604, 675, NULL },
   { (void *) 9629, 540, NULL },
   { (void *) 9645, 540, NULL },
   { (void *) 9664, 418, NULL },
   { (void *) 9676, 275, NULL },
   { (void *) 9686, 435, NULL },
   { (void *) 9697, 596, NULL },
   { (void *) 9707, 857, NULL },
   { (void *) 9732, 858, NULL },
   { (void *) 9757, 276, NULL },
   { (void *) 9769, 277, NULL },
   { (void *) 9781, 903, NULL },
   { (void *) 9793, 903, NULL },
   { (void *) 9808, 278, NULL },
   { (void *) 9820, 279, NULL },
   { (void *) 9832, 279, NULL },
   { (void *) 9847, 280, NULL },
   { (void *) 9859, 280, NULL },
   { (void *) 9874, 904, NULL },
   { (void *) 9889, 281, NULL },
   { (void *) 9901, 284, NULL },
   { (void *) 9924, 285, NULL },
   { (void *) 9947, 1001, NULL },
   { (void *) 9966, 1001, NULL },
   { (void *) 9988, 1002, NULL },
   { (void *) 10008, 1002, NULL },
   { (void *) 10031, 282, NULL },
   { (void *) 10049, 283, NULL },
   { (void *) 10067, 905, NULL },
   { (void *) 10085, 905, NULL },
   { (void *) 10106, 806, NULL },
   { (void *) 10125, 1012, NULL },
   { (void *) 10153, 1012, NULL },
   { (void *) 10184, 588, NULL },
   { (void *) 10205, 589, NULL },
   { (void *) 10223, 541, NULL },
   { (void *) 10242, 541, NULL },
   { (void *) 10264, 542, NULL },
   { (void *) 10277, 542, NULL },
   { (void *) 10293, 543, NULL },
   { (void *) 10306, 543, NULL },
   { (void *) 10322, 960, NULL },
   { (void *) 10336, 960, NULL },
   { (void *) 10353, 961, NULL },
   { (void *) 10372, 961, NULL },
   { (void *) 10394, 962, NULL },
   { (void *) 10414, 962, NULL },
   { (void *) 10437, 807, NULL },
   { (void *) 10461, 807, NULL },
   { (void *) 10488, 807, NULL },
   { (void *) 10514, 460, NULL },
   { (void *) 10532, 460, NULL },
   { (void *) 10553, 808, NULL },
   { (void *) 10573, 461, NULL },
   { (void *) 10591, 461, NULL },
   { (void *) 10612, 809, NULL },
   { (void *) 10632, 462, NULL },
   { (void *) 10650, 462, NULL },
   { (void *) 10671, 810, NULL },
   { (void *) 10691, 686, NULL },
   { (void *) 10709, 687, NULL },
   { (void *) 10735, 688, NULL },
   { (void *) 10760, 689, NULL },
   { (void *) 10777, 690, NULL },
   { (void *) 10790, 691, NULL },
   { (void *) 10803, 692, NULL },
   { (void *) 10816, 693, NULL },
   { (void *) 10830, 694, NULL },
   { (void *) 10848, 695, NULL },
   { (void *) 10867, 696, NULL },
   { (void *) 10886, 697, NULL },
   { (void *) 10908, 698, NULL },
   { (void *) 10931, 699, NULL },
   { (void *) 10947, 700, NULL },
   { (void *) 10964, 701, NULL },
   { (void *) 10981, 702, NULL },
   { (void *) 10998, 703, NULL },
   { (void *) 11016, 158, NULL },
   { (void *) 11021, 367, NULL },
   { (void *) 11031, 367, NULL },
   { (void *) 11044, 212, NULL },
   { (void *) 11054, 314, NULL },
   { (void *) 11067, 737, NULL },
   { (void *) 11083, 44, NULL },
   { (void *) 11090, 45, NULL },
   { (void *) 11098, 46, NULL },
   { (void *) 11105, 47, NULL },
   { (void *) 11113, 48, NULL },
   { (void *) 11120, 49, NULL },
   { (void *) 11128, 50, NULL },
   { (void *) 11135, 51, NULL },
   { (void *) 11143, 315, NULL },
   { (void *) 11151, 316, NULL },
   { (void *) 11160, 197, NULL },
   { (void *) 11170, 317, NULL },
   { (void *) 11188, 716, NULL },
   { (void *) 11209, 717, NULL },
   { (void *) 11233, 718, NULL },
   { (void *) 11255, 719, NULL },
   { (void *) 11280, 720, NULL },
   { (void *) 11299, 721, NULL },
   { (void *) 11321, 517, NULL },
   { (void *) 11330, 517, NULL },
   { (void *) 11342, 286, NULL },
   { (void *) 11352, 998, NULL },
   { (void *) 11372, 998, NULL },
   { (void *) 11383, 952, NULL },
   { (void *) 11397, 952, NULL },
   { (void *) 11414, 952, NULL },
   { (void *) 11431, 287, NULL },
   { (void *) 11438, 419, NULL },
   { (void *) 11448, 811, NULL },
   { (void *) 11461, 811, NULL },
   { (void *) 11473, 527, NULL },
   { (void *) 11481, 527, NULL },
   { (void *) 11492, 953, NULL },
   { (void *) 11507, 953, NULL },
   { (void *) 11525, 953, NULL },
   { (void *) 11543, 616, NULL },
   { (void *) 11553, 420, NULL },
   { (void *) 11562, 597, NULL },
   { (void *) 11569, 330, NULL },
   { (void *) 11579, 330, NULL },
   { (void *) 11592, 666, NULL },
   { (void *) 11612, 881, NULL },
   { (void *) 11626, 881, NULL },
   { (void *) 11645, 881, NULL },
   { (void *) 11662, 163, NULL },
   { (void *) 11674, 164, NULL },
   { (void *) 11687, 165, NULL },
   { (void *) 11699, 166, NULL },
   { (void *) 11712, 906, NULL },
   { (void *) 11724, 906, NULL },
   { (void *) 11739, 907, NULL },
   { (void *) 11752, 907, NULL },
   { (void *) 11768, 159, NULL },
   { (void *) 11775, 160, NULL },
   { (void *) 11783, 161, NULL },
   { (void *) 11790, 162, NULL },
   { (void *) 11798, 908, NULL },
   { (void *) 11805, 908, NULL },
   { (void *) 11815, 909, NULL },
   { (void *) 11823, 909, NULL },
   { (void *) 11834, 167, NULL },
   { (void *) 11846, 168, NULL },
   { (void *) 11856, 910, NULL },
   { (void *) 11867, 910, NULL },
   { (void *) 11881, 544, NULL },
   { (void *) 11893, 544, NULL },
   { (void *) 11908, 6, NULL },
   { (void *) 11917, 290, NULL },
   { (void *) 11930, 292, NULL },
   { (void *) 11942, 291, NULL },
   { (void *) 11954, 911, NULL },
   { (void *) 11966, 911, NULL },
   { (void *) 11981, 198, NULL },
   { (void *) 11990, 812, NULL },
   { (void *) 12004, 440, NULL },
   { (void *) 12025, 440, NULL },
   { (void *) 12049, 441, NULL },
   { (void *) 12070, 441, NULL },
   { (void *) 12094, 743, NULL },
   { (void *) 12108, 242, NULL },
   { (void *) 12116, 220, NULL },
   { (void *) 12122, 221, NULL },
   { (void *) 12128, 222, NULL },
   { (void *) 12134, 223, NULL },
   { (void *) 12140, 518, NULL },
   { (void *) 12150, 518, NULL },
   { (void *) 12163, 518, NULL },
   { (void *) 12176, 580, NULL },
   { (void *) 12191, 224, NULL },
   { (void *) 12201, 225, NULL },
   { (void *) 12211, 226, NULL },
   { (void *) 12221, 227, NULL },
   { (void *) 12231, 169, NULL },
   { (void *) 12241, 170, NULL },
   { (void *) 12252, 171, NULL },
   { (void *) 12262, 172, NULL },
   { (void *) 12273, 912, NULL },
   { (void *) 12283, 912, NULL },
   { (void *) 12296, 913, NULL },
   { (void *) 12307, 913, NULL },
   { (void *) 12321, 293, NULL },
   { (void *) 12332, 368, NULL },
   { (void *) 12339, 368, NULL },
   { (void *) 12349, 295, NULL },
   { (void *) 12361, 294, NULL },
   { (void *) 12373, 914, NULL },
   { (void *) 12385, 914, NULL },
   { (void *) 12400, 442, NULL },
   { (void *) 12421, 442, NULL },
   { (void *) 12445, 443, NULL },
   { (void *) 12466, 443, NULL },
   { (void *) 12490, 762, NULL },
   { (void *) 12506, 762, NULL },
   { (void *) 12525, 763, NULL },
   { (void *) 12543, 602, NULL },
   { (void *) 12571, 763, NULL },
   { (void *) 12592, 795, NULL },
   { (void *) 12615, 796, NULL },
   { (void *) 12640, 376, NULL },
   { (void *) 12656, 376, NULL },
   { (void *) 12675, 377, NULL },
   { (void *) 12692, 377, NULL },
   { (void *) 12712, 378, NULL },
   { (void *) 12728, 378, NULL },
   { (void *) 12747, 379, NULL },
   { (void *) 12764, 379, NULL },
   { (void *) 12784, 380, NULL },
   { (void *) 12800, 380, NULL },
   { (void *) 12819, 381, NULL },
   { (void *) 12836, 381, NULL },
   { (void *) 12856, 382, NULL },
   { (void *) 12872, 382, NULL },
   { (void *) 12891, 383, NULL },
   { (void *) 12908, 383, NULL },
   { (void *) 12928, 384, NULL },
   { (void *) 12944, 384, NULL },
   { (void *) 12963, 385, NULL },
   { (void *) 12980, 385, NULL },
   { (void *) 13000, 386, NULL },
   { (void *) 13016, 386, NULL },
   { (void *) 13035, 387, NULL },
   { (void *) 13052, 387, NULL },
   { (void *) 13072, 388, NULL },
   { (void *) 13088, 388, NULL },
   { (void *) 13107, 389, NULL },
   { (void *) 13124, 389, NULL },
   { (void *) 13144, 390, NULL },
   { (void *) 13160, 390, NULL },
   { (void *) 13179, 391, NULL },
   { (void *) 13196, 391, NULL },
   { (void *) 13216, 392, NULL },
   { (void *) 13232, 392, NULL },
   { (void *) 13251, 393, NULL },
   { (void *) 13268, 393, NULL },
   { (void *) 13288, 394, NULL },
   { (void *) 13304, 394, NULL },
   { (void *) 13323, 395, NULL },
   { (void *) 13340, 395, NULL },
   { (void *) 13360, 396, NULL },
   { (void *) 13376, 396, NULL },
   { (void *) 13395, 397, NULL },
   { (void *) 13412, 397, NULL },
   { (void *) 13432, 398, NULL },
   { (void *) 13448, 398, NULL },
   { (void *) 13467, 399, NULL },
   { (void *) 13484, 399, NULL },
   { (void *) 13504, 400, NULL },
   { (void *) 13520, 400, NULL },
   { (void *) 13539, 401, NULL },
   { (void *) 13556, 401, NULL },
   { (void *) 13576, 402, NULL },
   { (void *) 13592, 402, NULL },
   { (void *) 13611, 403, NULL },
   { (void *) 13628, 403, NULL },
   { (void *) 13648, 404, NULL },
   { (void *) 13664, 404, NULL },
   { (void *) 13683, 405, NULL },
   { (void *) 13700, 405, NULL },
   { (void *) 13720, 406, NULL },
   { (void *) 13736, 406, NULL },
   { (void *) 13755, 407, NULL },
   { (void *) 13772, 407, NULL },
   { (void *) 13792, 915, NULL },
   { (void *) 13808, 915, NULL },
   { (void *) 13827, 628, NULL },
   { (void *) 13845, 629, NULL },
   { (void *) 13864, 630, NULL },
   { (void *) 13882, 631, NULL },
   { (void *) 13901, 632, NULL },
   { (void *) 13919, 633, NULL },
   { (void *) 13938, 634, NULL },
   { (void *) 13956, 635, NULL },
   { (void *) 13975, 0, NULL },
   { (void *) 13983, 52, NULL },
   { (void *) 13992, 53, NULL },
   { (void *) 14002, 54, NULL },
   { (void *) 14011, 55, NULL },
   { (void *) 14021, 56, NULL },
   { (void *) 14030, 57, NULL },
   { (void *) 14040, 58, NULL },
   { (void *) 14049, 59, NULL },
   { (void *) 14059, 60, NULL },
   { (void *) 14068, 61, NULL },
   { (void *) 14078, 916, NULL },
   { (void *) 14087, 916, NULL },
   { (void *) 14099, 636, NULL },
   { (void *) 14110, 637, NULL },
   { (void *) 14122, 318, NULL },
   { (void *) 14136, 738, NULL },
   { (void *) 14153, 1016, NULL },
   { (void *) 14174, 1017, NULL },
   { (void *) 14197, 296, NULL },
   { (void *) 14203, 935, NULL },
   { (void *) 14210, 935, NULL },
   { (void *) 14220, 917, NULL },
   { (void *) 14227, 917, NULL },
   { (void *) 14237, 872, NULL },
   { (void *) 14253, 199, NULL },
   { (void *) 14265, 667, NULL },
   { (void *) 14288, 251, NULL },
   { (void *) 14299, 252, NULL },
   { (void *) 14311, 253, NULL },
   { (void *) 14323, 249, NULL },
   { (void *) 14335, 250, NULL },
   { (void *) 14347, 247, NULL },
   { (void *) 14362, 248, NULL },
   { (void *) 14377, 246, NULL },
   { (void *) 14387, 741, NULL },
   { (void *) 14403, 741, NULL },
   { (void *) 14422, 741, NULL },
   { (void *) 14441, 741, NULL },
   { (void *) 14461, 742, NULL },
   { (void *) 14478, 742, NULL },
   { (void *) 14498, 742, NULL },
   { (void *) 14518, 742, NULL },
   { (void *) 14539, 875, NULL },
   { (void *) 14555, 875, NULL },
   { (void *) 14573, 876, NULL },
   { (void *) 14590, 876, NULL },
   { (void *) 14609, 918, NULL },
   { (void *) 14625, 918, NULL },
   { (void *) 14644, 919, NULL },
   { (void *) 14661, 919, NULL },
   { (void *) 14681, 173, NULL },
   { (void *) 14691, 731, NULL },
   { (void *) 14711, 920, NULL },
   { (void *) 14722, 920, NULL },
   { (void *) 14736, 174, NULL },
   { (void *) 14748, 319, NULL },
   { (void *) 14762, 722, NULL },
   { (void *) 14779, 921, NULL },
   { (void *) 14794, 921, NULL },
   { (void *) 14812, 175, NULL },
   { (void *) 14827, 218, NULL },
   { (void *) 14837, 334, NULL },
   { (void *) 14853, 297, NULL },
   { (void *) 14863, 200, NULL },
   { (void *) 14871, 888, NULL },
   { (void *) 14893, 888, NULL },
   { (void *) 14917, 889, NULL },
   { (void *) 14936, 331, NULL },
   { (void *) 14955, 331, NULL },
   { (void *) 14977, 679, NULL },
   { (void *) 14991, 679, NULL },
   { (void *) 15008, 463, NULL },
   { (void *) 15033, 464, NULL },
   { (void *) 15059, 465, NULL },
   { (void *) 15084, 466, NULL },
   { (void *) 15110, 1023, NULL },
   { (void *) 15137, 467, NULL },
   { (void *) 15164, 468, NULL },
   { (void *) 15192, 469, NULL },
   { (void *) 15219, 470, NULL },
   { (void *) 15247, 1024, NULL },
   { (void *) 15276, 884, NULL },
   { (void *) 15302, 885, NULL },
   { (void *) 15329, 886, NULL },
   { (void *) 15355, 887, NULL },
   { (void *) 15382, 463, NULL },
   { (void *) 15403, 464, NULL },
   { (void *) 15425, 465, NULL },
   { (void *) 15446, 466, NULL },
   { (void *) 15468, 680, NULL },
   { (void *) 15486, 577, NULL },
   { (void *) 15507, 813, NULL },
   { (void *) 15530, 814, NULL },
   { (void *) 15553, 471, NULL },
   { (void *) 15570, 1014, NULL },
   { (void *) 15586, 1014, NULL },
   { (void *) 15605, 219, NULL },
   { (void *) 15616, 335, NULL },
   { (void *) 15633, 298, NULL },
   { (void *) 15644, 201, NULL },
   { (void *) 15653, 623, NULL },
   { (void *) 15666, 732, NULL },
   { (void *) 15682, 62, NULL },
   { (void *) 15694, 63, NULL },
   { (void *) 15707, 64, NULL },
   { (void *) 15719, 65, NULL },
   { (void *) 15732, 66, NULL },
   { (void *) 15744, 67, NULL },
   { (void *) 15757, 68, NULL },
   { (void *) 15769, 69, NULL },
   { (void *) 15782, 70, NULL },
   { (void *) 15794, 71, NULL },
   { (void *) 15807, 72, NULL },
   { (void *) 15819, 73, NULL },
   { (void *) 15832, 74, NULL },
   { (void *) 15844, 75, NULL },
   { (void *) 15857, 76, NULL },
   { (void *) 15869, 77, NULL },
   { (void *) 15882, 78, NULL },
   { (void *) 15894, 79, NULL },
   { (void *) 15907, 80, NULL },
   { (void *) 15919, 81, NULL },
   { (void *) 15932, 82, NULL },
   { (void *) 15944, 83, NULL },
   { (void *) 15957, 84, NULL },
   { (void *) 15969, 85, NULL },
   { (void *) 15982, 254, NULL },
   { (void *) 15993, 254, NULL },
   { (void *) 16006, 256, NULL },
   { (void *) 16017, 704, NULL },
   { (void *) 16032, 86, NULL },
   { (void *) 16038, 87, NULL },
   { (void *) 16045, 88, NULL },
   { (void *) 16051, 89, NULL },
   { (void *) 16058, 90, NULL },
   { (void *) 16064, 91, NULL },
   { (void *) 16071, 92, NULL },
   { (void *) 16077, 93, NULL },
   { (void *) 16084, 676, NULL },
   { (void *) 16106, 196, NULL },
   { (void *) 16117, 954, NULL },
   { (void *) 16137, 954, NULL },
   { (void *) 16160, 574, NULL },
   { (void *) 16191, 574, NULL },
   { (void *) 16225, 954, NULL },
   { (void *) 16248, 815, NULL },
   { (void *) 16274, 369, NULL },
   { (void *) 16289, 369, NULL },
   { (void *) 16307, 370, NULL },
   { (void *) 16319, 370, NULL },
   { (void *) 16334, 770, NULL },
   { (void *) 16352, 668, NULL },
   { (void *) 16376, 299, NULL },
   { (void *) 16384, 300, NULL },
   { (void *) 16392, 922, NULL },
   { (void *) 16400, 922, NULL },
   { (void *) 16411, 444, NULL },
   { (void *) 16426, 444, NULL },
   { (void *) 16444, 923, NULL },
   { (void *) 16460, 923, NULL },
   { (void *) 16479, 873, NULL },
   { (void *) 16492, 733, NULL },
   { (void *) 16506, 733, NULL },
   { (void *) 16521, 734, NULL },
   { (void *) 16538, 734, NULL },
   { (void *) 16556, 617, NULL },
   { (void *) 16576, 618, NULL },
   { (void *) 16597, 619, NULL },
   { (void *) 16615, 620, NULL },
   { (void *) 16634, 621, NULL },
   { (void *) 16652, 622, NULL },
   { (void *) 16671, 301, NULL },
   { (void *) 16678, 302, NULL },
   { (void *) 16685, 924, NULL },
   { (void *) 16692, 924, NULL },
   { (void *) 16702, 176, NULL },
   { (void *) 16710, 745, NULL },
   { (void *) 16727, 745, NULL },
   { (void *) 16747, 746, NULL },
   { (void *) 16765, 746, NULL },
   { (void *) 16786, 747, NULL },
   { (void *) 16803, 747, NULL },
   { (void *) 16823, 748, NULL },
   { (void *) 16841, 748, NULL },
   { (void *) 16862, 749, NULL },
   { (void *) 16879, 749, NULL },
   { (void *) 16899, 750, NULL },
   { (void *) 16917, 750, NULL },
   { (void *) 16938, 751, NULL },
   { (void *) 16955, 751, NULL },
   { (void *) 16975, 752, NULL },
   { (void *) 16993, 752, NULL },
   { (void *) 17014, 753, NULL },
   { (void *) 17031, 753, NULL },
   { (void *) 17051, 754, NULL },
   { (void *) 17069, 754, NULL },
   { (void *) 17090, 755, NULL },
   { (void *) 17108, 755, NULL },
   { (void *) 17129, 756, NULL },
   { (void *) 17148, 756, NULL },
   { (void *) 17170, 757, NULL },
   { (void *) 17188, 757, NULL },
   { (void *) 17209, 758, NULL },
   { (void *) 17228, 758, NULL },
   { (void *) 17250, 759, NULL },
   { (void *) 17268, 759, NULL },
   { (void *) 17289, 760, NULL },
   { (void *) 17308, 760, NULL },
   { (void *) 17330, 638, NULL },
   { (void *) 17349, 639, NULL },
   { (void *) 17369, 761, NULL },
   { (void *) 17391, 761, NULL },
   { (void *) 17416, 195, NULL },
   { (void *) 17429, 360, NULL },
   { (void *) 17447, 360, NULL },
   { (void *) 17468, 874, NULL },
   { (void *) 17497, 177, NULL },
   { (void *) 17508, 677, NULL },
   { (void *) 17521, 545, NULL },
   { (void *) 17534, 545, NULL },
   { (void *) 17550, 243, NULL },
   { (void *) 17562, 421, NULL },
   { (void *) 17582, 1022, NULL },
   { (void *) 17605, 209, NULL },
   { (void *) 17617, 422, NULL },
   { (void *) 17637, 244, NULL },
   { (void *) 17647, 423, NULL },
   { (void *) 17665, 423, NULL },
   { (void *) 17686, 581, NULL },
   { (void *) 17696, 581, NULL },
   { (void *) 17709, 859, NULL },
   { (void *) 17731, 860, NULL },
   { (void *) 17753, 94, NULL },
   { (void *) 17764, 95, NULL },
   { (void *) 17776, 96, NULL },
   { (void *) 17787, 97, NULL },
   { (void *) 17799, 98, NULL },
   { (void *) 17810, 99, NULL },
   { (void *) 17822, 100, NULL },
   { (void *) 17833, 101, NULL },
   { (void *) 17845, 102, NULL },
   { (void *) 17856, 103, NULL },
   { (void *) 17868, 104, NULL },
   { (void *) 17879, 105, NULL },
   { (void *) 17891, 106, NULL },
   { (void *) 17902, 107, NULL },
   { (void *) 17914, 108, NULL },
   { (void *) 17925, 109, NULL },
   { (void *) 17937, 110, NULL },
   { (void *) 17948, 111, NULL },
   { (void *) 17960, 112, NULL },
   { (void *) 17971, 113, NULL },
   { (void *) 17983, 114, NULL },
   { (void *) 17994, 115, NULL },
   { (void *) 18006, 116, NULL },
   { (void *) 18017, 117, NULL },
   { (void *) 18029, 118, NULL },
   { (void *) 18040, 119, NULL },
   { (void *) 18052, 120, NULL },
   { (void *) 18063, 121, NULL },
   { (void *) 18075, 122, NULL },
   { (void *) 18086, 123, NULL },
   { (void *) 18098, 124, NULL },
   { (void *) 18109, 125, NULL },
   { (void *) 18121, 640, NULL },
   { (void *) 18134, 641, NULL },
   { (void *) 18148, 642, NULL },
   { (void *) 18161, 643, NULL },
   { (void *) 18175, 644, NULL },
   { (void *) 18188, 645, NULL },
   { (void *) 18202, 646, NULL },
   { (void *) 18215, 647, NULL },
   { (void *) 18229, 320, NULL },
   { (void *) 18245, 739, NULL },
   { (void *) 18264, 184, NULL },
   { (void *) 18272, 185, NULL },
   { (void *) 18281, 186, NULL },
   { (void *) 18289, 187, NULL },
   { (void *) 18298, 925, NULL },
   { (void *) 18306, 925, NULL },
   { (void *) 18317, 926, NULL },
   { (void *) 18326, 926, NULL },
   { (void *) 18338, 188, NULL },
   { (void *) 18346, 189, NULL },
   { (void *) 18355, 190, NULL },
   { (void *) 18363, 190, NULL },
   { (void *) 18374, 191, NULL },
   { (void *) 18383, 191, NULL },
   { (void *) 18395, 192, NULL },
   { (void *) 18403, 192, NULL },
   { (void *) 18414, 193, NULL },
   { (void *) 18423, 193, NULL },
   { (void *) 18435, 927, NULL },
   { (void *) 18446, 928, NULL },
   { (void *) 18458, 182, NULL },
   { (void *) 18469, 183, NULL },
   { (void *) 18480, 371, NULL },
   { (void *) 18491, 371, NULL },
   { (void *) 18505, 371, NULL },
   { (void *) 18519, 1003, NULL },
   { (void *) 18535, 1003, NULL },
   { (void *) 18554, 1004, NULL },
   { (void *) 18571, 1004, NULL },
   { (void *) 18591, 178, NULL },
   { (void *) 18605, 179, NULL },
   { (void *) 18620, 180, NULL },
   { (void *) 18634, 181, NULL },
   { (void *) 18649, 929, NULL },
   { (void *) 18663, 929, NULL },
   { (void *) 18680, 930, NULL },
   { (void *) 18695, 930, NULL },
   { (void *) 18713, 710, NULL },
   { (void *) 18726, 711, NULL },
   { (void *) 18739, 712, NULL },
   { (void *) 18752, 332, NULL },
   { (void *) 18766, 332, NULL },
   { (void *) 18783, 333, NULL },
   { (void *) 18797, 333, NULL },
   { (void *) 18814, 372, NULL },
   { (void *) 18828, 372, NULL },
   { (void *) 18845, 372, NULL },
   { (void *) 18862, 1021, NULL },
   { (void *) 18879, 713, NULL },
   { (void *) 18899, 714, NULL },
   { (void *) 18919, 715, NULL },
   { (void *) 18939, 816, NULL },
   { (void *) 18953, 1013, NULL },
   { (void *) 18979, 1013, NULL },
   { (void *) 19008, 303, NULL },
   { (void *) 19019, 304, NULL },
   { (void *) 19030, 931, NULL },
   { (void *) 19041, 931, NULL },
   { (void *) 19055, 546, NULL },
   { (void *) 19065, 546, NULL },
   { (void *) 19078, 547, NULL },
   { (void *) 19089, 547, NULL },
   { (void *) 19103, 548, NULL },
   { (void *) 19113, 548, NULL },
   { (void *) 19126, 549, NULL },
   { (void *) 19137, 549, NULL },
   { (void *) 19151, 963, NULL },
   { (void *) 19162, 963, NULL },
   { (void *) 19176, 964, NULL },
   { (void *) 19188, 964, NULL },
   { (void *) 19203, 550, NULL },
   { (void *) 19213, 550, NULL },
   { (void *) 19226, 551, NULL },
   { (void *) 19237, 551, NULL },
   { (void *) 19251, 552, NULL },
   { (void *) 19261, 552, NULL },
   { (void *) 19274, 553, NULL },
   { (void *) 19285, 553, NULL },
   { (void *) 19299, 965, NULL },
   { (void *) 19310, 965, NULL },
   { (void *) 19324, 966, NULL },
   { (void *) 19336, 966, NULL },
   { (void *) 19351, 554, NULL },
   { (void *) 19361, 554, NULL },
   { (void *) 19374, 555, NULL },
   { (void *) 19385, 555, NULL },
   { (void *) 19399, 556, NULL },
   { (void *) 19409, 556, NULL },
   { (void *) 19422, 557, NULL },
   { (void *) 19433, 557, NULL },
   { (void *) 19447, 967, NULL },
   { (void *) 19458, 967, NULL },
   { (void *) 19472, 968, NULL },
   { (void *) 19484, 968, NULL },
   { (void *) 19499, 558, NULL },
   { (void *) 19509, 558, NULL },
   { (void *) 19522, 559, NULL },
   { (void *) 19533, 559, NULL },
   { (void *) 19547, 560, NULL },
   { (void *) 19557, 560, NULL },
   { (void *) 19570, 561, NULL },
   { (void *) 19581, 561, NULL },
   { (void *) 19595, 969, NULL },
   { (void *) 19606, 969, NULL },
   { (void *) 19620, 970, NULL },
   { (void *) 19632, 970, NULL },
   { (void *) 19647, 590, NULL },
   { (void *) 19667, 562, NULL },
   { (void *) 19684, 562, NULL },
   { (void *) 19704, 424, NULL },
   { (void *) 19723, 425, NULL },
   { (void *) 19742, 563, NULL },
   { (void *) 19759, 563, NULL },
   { (void *) 19779, 426, NULL },
   { (void *) 19798, 427, NULL },
   { (void *) 19817, 564, NULL },
   { (void *) 19834, 564, NULL },
   { (void *) 19854, 428, NULL },
   { (void *) 19873, 429, NULL },
   { (void *) 19892, 744, NULL },
   { (void *) 19908, 519, NULL },
   { (void *) 19920, 519, NULL },
   { (void *) 19935, 519, NULL },
   { (void *) 19950, 565, NULL },
   { (void *) 19961, 565, NULL },
   { (void *) 19981, 1020, NULL },
   { (void *) 20001, 566, NULL },
   { (void *) 20017, 566, NULL },
   { (void *) 20036, 126, NULL },
   { (void *) 20045, 127, NULL },
   { (void *) 20055, 128, NULL },
   { (void *) 20064, 129, NULL },
   { (void *) 20074, 130, NULL },
   { (void *) 20083, 131, NULL },
   { (void *) 20093, 132, NULL },
   { (void *) 20102, 133, NULL },
   { (void *) 20112, 134, NULL },
   { (void *) 20121, 135, NULL },
   { (void *) 20131, 136, NULL },
   { (void *) 20140, 137, NULL },
   { (void *) 20150, 138, NULL },
   { (void *) 20159, 139, NULL },
   { (void *) 20169, 140, NULL },
   { (void *) 20178, 141, NULL },
   { (void *) 20188, 142, NULL },
   { (void *) 20197, 143, NULL },
   { (void *) 20207, 144, NULL },
   { (void *) 20216, 145, NULL },
   { (void *) 20226, 146, NULL },
   { (void *) 20235, 147, NULL },
   { (void *) 20245, 148, NULL },
   { (void *) 20254, 149, NULL },
   { (void *) 20264, 472, NULL },
   { (void *) 20279, 472, NULL },
   { (void *) 20297, 817, NULL },
   { (void *) 20314, 473, NULL },
   { (void *) 20330, 473, NULL },
   { (void *) 20349, 818, NULL },
   { (void *) 20367, 474, NULL },
   { (void *) 20382, 474, NULL },
   { (void *) 20400, 819, NULL },
   { (void *) 20417, 475, NULL },
   { (void *) 20433, 475, NULL },
   { (void *) 20452, 820, NULL },
   { (void *) 20470, 476, NULL },
   { (void *) 20485, 476, NULL },
   { (void *) 20503, 821, NULL },
   { (void *) 20520, 477, NULL },
   { (void *) 20536, 477, NULL },
   { (void *) 20555, 822, NULL },
   { (void *) 20573, 478, NULL },
   { (void *) 20588, 478, NULL },
   { (void *) 20606, 823, NULL },
   { (void *) 20623, 479, NULL },
   { (void *) 20639, 479, NULL },
   { (void *) 20658, 824, NULL },
   { (void *) 20676, 480, NULL },
   { (void *) 20691, 480, NULL },
   { (void *) 20709, 825, NULL },
   { (void *) 20726, 481, NULL },
   { (void *) 20742, 481, NULL },
   { (void *) 20761, 826, NULL },
   { (void *) 20779, 482, NULL },
   { (void *) 20794, 482, NULL },
   { (void *) 20812, 827, NULL },
   { (void *) 20829, 483, NULL },
   { (void *) 20845, 483, NULL },
   { (void *) 20864, 828, NULL },
   { (void *) 20882, 484, NULL },
   { (void *) 20897, 484, NULL },
   { (void *) 20915, 829, NULL },
   { (void *) 20932, 485, NULL },
   { (void *) 20948, 485, NULL },
   { (void *) 20967, 830, NULL },
   { (void *) 20985, 486, NULL },
   { (void *) 21000, 486, NULL },
   { (void *) 21018, 831, NULL },
   { (void *) 21035, 487, NULL },
   { (void *) 21051, 487, NULL },
   { (void *) 21070, 832, NULL },
   { (void *) 21088, 488, NULL },
   { (void *) 21103, 488, NULL },
   { (void *) 21121, 833, NULL },
   { (void *) 21138, 489, NULL },
   { (void *) 21154, 489, NULL },
   { (void *) 21173, 834, NULL },
   { (void *) 21191, 490, NULL },
   { (void *) 21208, 490, NULL },
   { (void *) 21228, 491, NULL },
   { (void *) 21245, 491, NULL },
   { (void *) 21265, 492, NULL },
   { (void *) 21282, 492, NULL },
   { (void *) 21302, 493, NULL },
   { (void *) 21319, 493, NULL },
   { (void *) 21339, 494, NULL },
   { (void *) 21357, 494, NULL },
   { (void *) 21378, 495, NULL },
   { (void *) 21396, 495, NULL },
   { (void *) 21417, 496, NULL },
   { (void *) 21435, 496, NULL },
   { (void *) 21456, 497, NULL },
   { (void *) 21472, 497, NULL },
   { (void *) 21491, 498, NULL },
   { (void *) 21506, 498, NULL },
   { (void *) 21524, 835, NULL },
   { (void *) 21541, 499, NULL },
   { (void *) 21557, 499, NULL },
   { (void *) 21576, 836, NULL },
   { (void *) 21594, 500, NULL },
   { (void *) 21609, 500, NULL },
   { (void *) 21627, 837, NULL },
   { (void *) 21644, 501, NULL },
   { (void *) 21660, 501, NULL },
   { (void *) 21679, 838, NULL },
   { (void *) 21697, 502, NULL },
   { (void *) 21713, 502, NULL },
   { (void *) 21732, 503, NULL },
   { (void *) 21747, 503, NULL },
   { (void *) 21765, 839, NULL },
   { (void *) 21782, 504, NULL },
   { (void *) 21798, 504, NULL },
   { (void *) 21817, 840, NULL },
   { (void *) 21835, 841, NULL },
   { (void *) 21853, 505, NULL },
   { (void *) 21870, 505, NULL },
   { (void *) 21890, 842, NULL },
   { (void *) 21909, 506, NULL },
   { (void *) 21926, 506, NULL },
   { (void *) 21946, 507, NULL },
   { (void *) 21963, 507, NULL },
   { (void *) 21983, 439, NULL },
   { (void *) 22003, 578, NULL },
   { (void *) 22026, 971, NULL },
   { (void *) 22042, 971, NULL },
   { (void *) 22061, 972, NULL },
   { (void *) 22078, 972, NULL },
   { (void *) 22098, 973, NULL },
   { (void *) 22115, 973, NULL },
   { (void *) 22135, 974, NULL },
   { (void *) 22153, 974, NULL },
   { (void *) 22174, 975, NULL },
   { (void *) 22190, 975, NULL },
   { (void *) 22209, 976, NULL },
   { (void *) 22226, 976, NULL },
   { (void *) 22246, 977, NULL },
   { (void *) 22263, 977, NULL },
   { (void *) 22283, 978, NULL },
   { (void *) 22301, 978, NULL },
   { (void *) 22322, 979, NULL },
   { (void *) 22338, 979, NULL },
   { (void *) 22357, 980, NULL },
   { (void *) 22374, 980, NULL },
   { (void *) 22394, 981, NULL },
   { (void *) 22411, 981, NULL },
   { (void *) 22431, 982, NULL },
   { (void *) 22449, 982, NULL },
   { (void *) 22470, 983, NULL },
   { (void *) 22487, 983, NULL },
   { (void *) 22507, 984, NULL },
   { (void *) 22523, 984, NULL },
   { (void *) 22542, 985, NULL },
   { (void *) 22559, 985, NULL },
   { (void *) 22579, 986, NULL },
   { (void *) 22596, 986, NULL },
   { (void *) 22616, 987, NULL },
   { (void *) 22634, 987, NULL },
   { (void *) 22655, 988, NULL },
   { (void *) 22672, 988, NULL },
   { (void *) 22692, 989, NULL },
   { (void *) 22710, 989, NULL },
   { (void *) 22731, 990, NULL },
   { (void *) 22749, 990, NULL },
   { (void *) 22770, 991, NULL },
   { (void *) 22791, 991, NULL },
   { (void *) 22815, 648, NULL },
   { (void *) 22832, 649, NULL },
   { (void *) 22850, 650, NULL },
   { (void *) 22867, 651, NULL },
   { (void *) 22885, 652, NULL },
   { (void *) 22902, 653, NULL },
   { (void *) 22920, 654, NULL },
   { (void *) 22937, 655, NULL },
   { (void *) 22955, 508, NULL },
   { (void *) 22975, 508, NULL },
   { (void *) 22998, 843, NULL },
   { (void *) 23020, 844, NULL },
   { (void *) 23039, 845, NULL },
   { (void *) 23058, 846, NULL },
   { (void *) 23077, 847, NULL },
   { (void *) 23096, 848, NULL },
   { (void *) 23115, 849, NULL },
   { (void *) 23134, 850, NULL },
   { (void *) 23153, 851, NULL },
   { (void *) 23172, 852, NULL },
   { (void *) 23191, 853, NULL },
   { (void *) 23210, 854, NULL },
   { (void *) 23229, 855, NULL },
   { (void *) 23248, 856, NULL },
   { (void *) 23268, 656, NULL },
   { (void *) 23279, 657, NULL },
   { (void *) 23291, 658, NULL },
   { (void *) 23302, 659, NULL },
   { (void *) 23314, 660, NULL },
   { (void *) 23325, 661, NULL },
   { (void *) 23337, 321, NULL },
   { (void *) 23351, 740, NULL },
   { (void *) 23368, 305, NULL },
   { (void *) 23377, 598, NULL },
   { (void *) 23386, 771, NULL },
   { (void *) 23398, 771, NULL },
   { (void *) 23413, 771, NULL },
   { (void *) 23429, 772, NULL },
   { (void *) 23442, 772, NULL },
   { (void *) 23458, 772, NULL },
   { (void *) 23475, 773, NULL },
   { (void *) 23487, 773, NULL },
   { (void *) 23502, 773, NULL },
   { (void *) 23518, 774, NULL },
   { (void *) 23531, 774, NULL },
   { (void *) 23547, 774, NULL },
   { (void *) 23564, 775, NULL },
   { (void *) 23576, 775, NULL },
   { (void *) 23591, 775, NULL },
   { (void *) 23607, 776, NULL },
   { (void *) 23620, 776, NULL },
   { (void *) 23636, 776, NULL },
   { (void *) 23653, 777, NULL },
   { (void *) 23665, 777, NULL },
   { (void *) 23680, 777, NULL },
   { (void *) 23696, 778, NULL },
   { (void *) 23709, 778, NULL },
   { (void *) 23725, 778, NULL },
   { (void *) 23742, 779, NULL },
   { (void *) 23754, 779, NULL },
   { (void *) 23769, 779, NULL },
   { (void *) 23785, 780, NULL },
   { (void *) 23798, 780, NULL },
   { (void *) 23814, 780, NULL },
   { (void *) 23831, 781, NULL },
   { (void *) 23843, 781, NULL },
   { (void *) 23858, 781, NULL },
   { (void *) 23874, 782, NULL },
   { (void *) 23887, 782, NULL },
   { (void *) 23903, 782, NULL },
   { (void *) 23920, 783, NULL },
   { (void *) 23932, 783, NULL },
   { (void *) 23947, 783, NULL },
   { (void *) 23963, 784, NULL },
   { (void *) 23976, 784, NULL },
   { (void *) 23992, 784, NULL },
   { (void *) 24009, 785, NULL },
   { (void *) 24021, 785, NULL },
   { (void *) 24036, 785, NULL },
   { (void *) 24052, 786, NULL },
   { (void *) 24065, 786, NULL },
   { (void *) 24081, 786, NULL },
   { (void *) 24098, 787, NULL },
   { (void *) 24114, 788, NULL },
   { (void *) 24131, 789, NULL },
   { (void *) 24147, 790, NULL },
   { (void *) 24164, 791, NULL },
   { (void *) 24180, 792, NULL },
   { (void *) 24197, 793, NULL },
   { (void *) 24213, 794, NULL }
};
#undef MAPI_TMP_PUBLIC_STUBS
#endif /* MAPI_TMP_PUBLIC_STUBS */

#ifdef MAPI_TMP_PUBLIC_ENTRIES
void APIENTRY shared_dispatch_stub_0(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);
}

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

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

void APIENTRY shared_dispatch_stub_3(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);
}

void APIENTRY shared_dispatch_stub_4(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);
}

GLuint APIENTRY shared_dispatch_stub_5(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);
}

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

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

void APIENTRY shared_dispatch_stub_8(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);
}

void APIENTRY shared_dispatch_stub_9(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);
}

void APIENTRY shared_dispatch_stub_10(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);
}

void APIENTRY shared_dispatch_stub_11(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);
}

void APIENTRY shared_dispatch_stub_12(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);
}

void APIENTRY shared_dispatch_stub_13(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);
}

void APIENTRY shared_dispatch_stub_14(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);
}

void APIENTRY shared_dispatch_stub_15(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);
}

void APIENTRY shared_dispatch_stub_16(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);
}

void APIENTRY shared_dispatch_stub_17(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);
}

void APIENTRY shared_dispatch_stub_18(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);
}

void APIENTRY shared_dispatch_stub_19(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);
}

void APIENTRY shared_dispatch_stub_20(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);
}

void APIENTRY shared_dispatch_stub_21(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);
}

void APIENTRY shared_dispatch_stub_22(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);
}

void APIENTRY shared_dispatch_stub_23(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);
}

void APIENTRY shared_dispatch_stub_24(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);
}

void APIENTRY shared_dispatch_stub_25(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);
}

void APIENTRY shared_dispatch_stub_26(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);
}

void APIENTRY shared_dispatch_stub_27(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);
}

void APIENTRY shared_dispatch_stub_28(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);
}

void APIENTRY shared_dispatch_stub_29(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);
}

void APIENTRY shared_dispatch_stub_30(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);
}

void APIENTRY shared_dispatch_stub_31(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);
}

void APIENTRY shared_dispatch_stub_32(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);
}

void APIENTRY shared_dispatch_stub_33(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);
}

void APIENTRY shared_dispatch_stub_34(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);
}

void APIENTRY shared_dispatch_stub_35(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);
}

void APIENTRY shared_dispatch_stub_36(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);
}

void APIENTRY shared_dispatch_stub_37(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);
}

void APIENTRY shared_dispatch_stub_38(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);
}

void APIENTRY shared_dispatch_stub_39(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);
}

void APIENTRY shared_dispatch_stub_40(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);
}

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

void APIENTRY shared_dispatch_stub_42(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);
}

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

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

void APIENTRY shared_dispatch_stub_45(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);
}

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

void APIENTRY shared_dispatch_stub_47(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);
}

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

void APIENTRY shared_dispatch_stub_49(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);
}

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

void APIENTRY shared_dispatch_stub_51(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);
}

void APIENTRY shared_dispatch_stub_52(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);
}

void APIENTRY shared_dispatch_stub_53(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);
}

void APIENTRY shared_dispatch_stub_54(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);
}

void APIENTRY shared_dispatch_stub_55(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);
}

void APIENTRY shared_dispatch_stub_56(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);
}

void APIENTRY shared_dispatch_stub_57(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);
}

void APIENTRY shared_dispatch_stub_58(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);
}

void APIENTRY shared_dispatch_stub_59(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);
}

void APIENTRY shared_dispatch_stub_60(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);
}

void APIENTRY shared_dispatch_stub_61(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);
}

void APIENTRY shared_dispatch_stub_62(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);
}

void APIENTRY shared_dispatch_stub_63(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);
}

void APIENTRY shared_dispatch_stub_64(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);
}

void APIENTRY shared_dispatch_stub_65(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);
}

void APIENTRY shared_dispatch_stub_66(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);
}

void APIENTRY shared_dispatch_stub_67(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);
}

void APIENTRY shared_dispatch_stub_68(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);
}

void APIENTRY shared_dispatch_stub_69(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);
}

void APIENTRY shared_dispatch_stub_70(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);
}

void APIENTRY shared_dispatch_stub_71(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);
}

void APIENTRY shared_dispatch_stub_72(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);
}

void APIENTRY shared_dispatch_stub_73(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);
}

void APIENTRY shared_dispatch_stub_74(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);
}

void APIENTRY shared_dispatch_stub_75(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);
}

void APIENTRY shared_dispatch_stub_76(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);
}

void APIENTRY shared_dispatch_stub_77(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);
}

void APIENTRY shared_dispatch_stub_78(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);
}

void APIENTRY shared_dispatch_stub_79(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);
}

void APIENTRY shared_dispatch_stub_80(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);
}

void APIENTRY shared_dispatch_stub_81(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);
}

void APIENTRY shared_dispatch_stub_82(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);
}

void APIENTRY shared_dispatch_stub_83(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);
}

void APIENTRY shared_dispatch_stub_84(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);
}

void APIENTRY shared_dispatch_stub_85(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);
}

void APIENTRY shared_dispatch_stub_86(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);
}

void APIENTRY shared_dispatch_stub_87(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);
}

void APIENTRY shared_dispatch_stub_88(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);
}

void APIENTRY shared_dispatch_stub_89(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);
}

void APIENTRY shared_dispatch_stub_90(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);
}

void APIENTRY shared_dispatch_stub_91(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);
}

void APIENTRY shared_dispatch_stub_92(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);
}

void APIENTRY shared_dispatch_stub_93(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);
}

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

void APIENTRY shared_dispatch_stub_95(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);
}

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

void APIENTRY shared_dispatch_stub_97(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);
}

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

void APIENTRY shared_dispatch_stub_99(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);
}

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

void APIENTRY shared_dispatch_stub_101(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);
}

void APIENTRY shared_dispatch_stub_102(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);
}

void APIENTRY shared_dispatch_stub_103(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);
}

void APIENTRY shared_dispatch_stub_104(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);
}

void APIENTRY shared_dispatch_stub_105(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);
}

void APIENTRY shared_dispatch_stub_106(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);
}

void APIENTRY shared_dispatch_stub_107(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);
}

void APIENTRY shared_dispatch_stub_108(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);
}

void APIENTRY shared_dispatch_stub_109(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);
}

void APIENTRY shared_dispatch_stub_110(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);
}

void APIENTRY shared_dispatch_stub_111(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);
}

void APIENTRY shared_dispatch_stub_112(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);
}

void APIENTRY shared_dispatch_stub_113(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);
}

void APIENTRY shared_dispatch_stub_114(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);
}

void APIENTRY shared_dispatch_stub_115(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);
}

void APIENTRY shared_dispatch_stub_116(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);
}

void APIENTRY shared_dispatch_stub_117(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);
}

void APIENTRY shared_dispatch_stub_118(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);
}

void APIENTRY shared_dispatch_stub_119(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);
}

void APIENTRY shared_dispatch_stub_120(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);
}

void APIENTRY shared_dispatch_stub_121(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);
}

void APIENTRY shared_dispatch_stub_122(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);
}

void APIENTRY shared_dispatch_stub_123(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);
}

void APIENTRY shared_dispatch_stub_124(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);
}

void APIENTRY shared_dispatch_stub_125(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);
}

void APIENTRY shared_dispatch_stub_126(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);
}

void APIENTRY shared_dispatch_stub_127(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);
}

void APIENTRY shared_dispatch_stub_128(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);
}

void APIENTRY shared_dispatch_stub_129(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);
}

void APIENTRY shared_dispatch_stub_130(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);
}

void APIENTRY shared_dispatch_stub_131(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);
}

void APIENTRY shared_dispatch_stub_132(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);
}

void APIENTRY shared_dispatch_stub_133(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);
}

void APIENTRY shared_dispatch_stub_134(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);
}

void APIENTRY shared_dispatch_stub_135(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);
}

void APIENTRY shared_dispatch_stub_136(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);
}

void APIENTRY shared_dispatch_stub_137(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);
}

void APIENTRY shared_dispatch_stub_138(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);
}

void APIENTRY shared_dispatch_stub_139(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);
}

void APIENTRY shared_dispatch_stub_140(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);
}

void APIENTRY shared_dispatch_stub_141(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);
}

void APIENTRY shared_dispatch_stub_142(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);
}

void APIENTRY shared_dispatch_stub_143(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);
}

void APIENTRY shared_dispatch_stub_144(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);
}

void APIENTRY shared_dispatch_stub_145(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);
}

void APIENTRY shared_dispatch_stub_146(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);
}

void APIENTRY shared_dispatch_stub_147(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);
}

void APIENTRY shared_dispatch_stub_148(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);
}

void APIENTRY shared_dispatch_stub_149(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);
}

void APIENTRY shared_dispatch_stub_150(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);
}

void APIENTRY shared_dispatch_stub_151(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);
}

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

void APIENTRY shared_dispatch_stub_153(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);
}

void APIENTRY shared_dispatch_stub_154(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);
}

void APIENTRY shared_dispatch_stub_155(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);
}

void APIENTRY shared_dispatch_stub_156(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);
}

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

void APIENTRY shared_dispatch_stub_158(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);
}

void APIENTRY shared_dispatch_stub_159(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);
}

void APIENTRY shared_dispatch_stub_160(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);
}

void APIENTRY shared_dispatch_stub_161(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);
}

void APIENTRY shared_dispatch_stub_162(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);
}

void APIENTRY shared_dispatch_stub_163(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);
}

void APIENTRY shared_dispatch_stub_164(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);
}

void APIENTRY shared_dispatch_stub_165(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);
}

void APIENTRY shared_dispatch_stub_166(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);
}

void APIENTRY shared_dispatch_stub_167(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);
}

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

void APIENTRY shared_dispatch_stub_169(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);
}

void APIENTRY shared_dispatch_stub_170(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);
}

void APIENTRY shared_dispatch_stub_171(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);
}

void APIENTRY shared_dispatch_stub_172(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);
}

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

void APIENTRY shared_dispatch_stub_174(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);
}

void APIENTRY shared_dispatch_stub_175(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);
}

void APIENTRY shared_dispatch_stub_176(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);
}

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

void APIENTRY shared_dispatch_stub_178(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);
}

void APIENTRY shared_dispatch_stub_179(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);
}

void APIENTRY shared_dispatch_stub_180(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);
}

void APIENTRY shared_dispatch_stub_181(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);
}

void APIENTRY shared_dispatch_stub_182(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);
}

void APIENTRY shared_dispatch_stub_183(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);
}

void APIENTRY shared_dispatch_stub_184(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);
}

void APIENTRY shared_dispatch_stub_185(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);
}

void APIENTRY shared_dispatch_stub_186(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);
}

void APIENTRY shared_dispatch_stub_187(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);
}

void APIENTRY shared_dispatch_stub_188(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);
}

void APIENTRY shared_dispatch_stub_189(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);
}

void APIENTRY shared_dispatch_stub_190(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);
}

void APIENTRY shared_dispatch_stub_191(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);
}

void APIENTRY shared_dispatch_stub_192(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);
}

void APIENTRY shared_dispatch_stub_193(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);
}

void APIENTRY shared_dispatch_stub_194(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);
}

void APIENTRY shared_dispatch_stub_195(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);
}

GLint APIENTRY shared_dispatch_stub_196(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);
}

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

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

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

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

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

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

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

void APIENTRY shared_dispatch_stub_204(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);
}

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

void APIENTRY shared_dispatch_stub_206(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);
}

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

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

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

void APIENTRY shared_dispatch_stub_210(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);
}

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

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

void APIENTRY shared_dispatch_stub_213(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);
}

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

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

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

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

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

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

void APIENTRY shared_dispatch_stub_220(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);
}

void APIENTRY shared_dispatch_stub_221(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);
}

void APIENTRY shared_dispatch_stub_222(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);
}

void APIENTRY shared_dispatch_stub_223(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);
}

void APIENTRY shared_dispatch_stub_224(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);
}

void APIENTRY shared_dispatch_stub_225(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);
}

void APIENTRY shared_dispatch_stub_226(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);
}

void APIENTRY shared_dispatch_stub_227(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);
}

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

void APIENTRY shared_dispatch_stub_229(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);
}

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

void APIENTRY shared_dispatch_stub_231(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);
}

void APIENTRY shared_dispatch_stub_232(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);
}

void APIENTRY shared_dispatch_stub_233(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);
}

void APIENTRY shared_dispatch_stub_234(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);
}

void APIENTRY shared_dispatch_stub_235(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);
}

void APIENTRY shared_dispatch_stub_236(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);
}

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

void APIENTRY shared_dispatch_stub_238(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);
}

void APIENTRY shared_dispatch_stub_239(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);
}

void APIENTRY shared_dispatch_stub_240(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);
}

void APIENTRY shared_dispatch_stub_241(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);
}

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

void APIENTRY shared_dispatch_stub_243(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);
}

void APIENTRY shared_dispatch_stub_244(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);
}

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

void APIENTRY shared_dispatch_stub_246(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);
}

void APIENTRY shared_dispatch_stub_247(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);
}

void APIENTRY shared_dispatch_stub_248(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);
}

void APIENTRY shared_dispatch_stub_249(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);
}

void APIENTRY shared_dispatch_stub_250(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);
}

void APIENTRY shared_dispatch_stub_251(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);
}

void APIENTRY shared_dispatch_stub_252(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);
}

void APIENTRY shared_dispatch_stub_253(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);
}

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

void APIENTRY shared_dispatch_stub_255(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);
}

void APIENTRY shared_dispatch_stub_256(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);
}

void APIENTRY shared_dispatch_stub_257(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);
}

void APIENTRY shared_dispatch_stub_258(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);
}

void APIENTRY shared_dispatch_stub_259(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);
}

void APIENTRY shared_dispatch_stub_260(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);
}

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

void APIENTRY shared_dispatch_stub_262(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);
}

void APIENTRY shared_dispatch_stub_263(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);
}

void APIENTRY shared_dispatch_stub_264(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);
}

void APIENTRY shared_dispatch_stub_265(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);
}

void APIENTRY shared_dispatch_stub_266(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);
}

void APIENTRY shared_dispatch_stub_267(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);
}

void APIENTRY shared_dispatch_stub_268(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);
}

void APIENTRY shared_dispatch_stub_269(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);
}

void APIENTRY shared_dispatch_stub_270(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);
}

void APIENTRY shared_dispatch_stub_271(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);
}

void APIENTRY shared_dispatch_stub_272(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);
}

void APIENTRY shared_dispatch_stub_273(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);
}

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

const GLubyte * APIENTRY shared_dispatch_stub_275(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);
}

void APIENTRY shared_dispatch_stub_276(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);
}

void APIENTRY shared_dispatch_stub_277(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);
}

void APIENTRY shared_dispatch_stub_278(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);
}

void APIENTRY shared_dispatch_stub_279(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);
}

void APIENTRY shared_dispatch_stub_280(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);
}

void APIENTRY shared_dispatch_stub_281(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);
}

void APIENTRY shared_dispatch_stub_282(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);
}

void APIENTRY shared_dispatch_stub_283(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);
}

void APIENTRY shared_dispatch_stub_284(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);
}

void APIENTRY shared_dispatch_stub_285(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);
}

GLboolean APIENTRY shared_dispatch_stub_286(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);
}

GLboolean APIENTRY shared_dispatch_stub_287(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);
}

void APIENTRY shared_dispatch_stub_288(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);
}

void APIENTRY shared_dispatch_stub_289(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);
}

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

void APIENTRY shared_dispatch_stub_291(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);
}

void APIENTRY shared_dispatch_stub_292(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);
}

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

void APIENTRY shared_dispatch_stub_294(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);
}

void APIENTRY shared_dispatch_stub_295(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);
}

void APIENTRY shared_dispatch_stub_296(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);
}

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

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

void APIENTRY shared_dispatch_stub_299(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);
}

void APIENTRY shared_dispatch_stub_300(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);
}

void APIENTRY shared_dispatch_stub_301(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);
}

void APIENTRY shared_dispatch_stub_302(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);
}

void APIENTRY shared_dispatch_stub_303(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);
}

void APIENTRY shared_dispatch_stub_304(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);
}

void APIENTRY shared_dispatch_stub_305(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);
}

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

void APIENTRY shared_dispatch_stub_307(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);
}

void APIENTRY shared_dispatch_stub_308(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);
}

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

void APIENTRY shared_dispatch_stub_310(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);
}

void APIENTRY shared_dispatch_stub_311(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);
}

void APIENTRY shared_dispatch_stub_312(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);
}

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

void APIENTRY shared_dispatch_stub_314(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);
}

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

void APIENTRY shared_dispatch_stub_316(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);
}

void APIENTRY shared_dispatch_stub_317(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);
}

void APIENTRY shared_dispatch_stub_318(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);
}

void APIENTRY shared_dispatch_stub_319(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);
}

void APIENTRY shared_dispatch_stub_320(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);
}

void APIENTRY shared_dispatch_stub_321(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);
}

GLboolean APIENTRY shared_dispatch_stub_322(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);
}

void APIENTRY shared_dispatch_stub_323(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);
}

void APIENTRY shared_dispatch_stub_324(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);
}

void APIENTRY shared_dispatch_stub_325(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);
}

void APIENTRY shared_dispatch_stub_326(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);
}

void APIENTRY shared_dispatch_stub_327(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);
}

void APIENTRY shared_dispatch_stub_328(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);
}

void APIENTRY shared_dispatch_stub_329(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);
}

GLboolean APIENTRY shared_dispatch_stub_330(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);
}

void APIENTRY shared_dispatch_stub_331(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);
}

void APIENTRY shared_dispatch_stub_332(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);
}

void APIENTRY shared_dispatch_stub_333(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);
}

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

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

void APIENTRY shared_dispatch_stub_336(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);
}

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

void APIENTRY shared_dispatch_stub_338(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);
}

void APIENTRY shared_dispatch_stub_339(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);
}

void APIENTRY shared_dispatch_stub_340(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);
}

void APIENTRY shared_dispatch_stub_341(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);
}

void APIENTRY shared_dispatch_stub_342(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);
}

void APIENTRY shared_dispatch_stub_343(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);
}

void APIENTRY shared_dispatch_stub_344(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);
}

void APIENTRY shared_dispatch_stub_345(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);
}

void APIENTRY shared_dispatch_stub_346(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);
}

void APIENTRY shared_dispatch_stub_347(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);
}

void APIENTRY shared_dispatch_stub_348(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);
}

void APIENTRY shared_dispatch_stub_349(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);
}

void APIENTRY shared_dispatch_stub_350(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);
}

void APIENTRY shared_dispatch_stub_351(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);
}

void APIENTRY shared_dispatch_stub_352(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);
}

void APIENTRY shared_dispatch_stub_353(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);
}

void APIENTRY shared_dispatch_stub_354(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);
}

void APIENTRY shared_dispatch_stub_355(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);
}

void APIENTRY shared_dispatch_stub_356(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);
}

void APIENTRY shared_dispatch_stub_357(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);
}

void APIENTRY shared_dispatch_stub_358(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);
}

void APIENTRY shared_dispatch_stub_359(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);
}

void APIENTRY shared_dispatch_stub_360(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);
}

void APIENTRY shared_dispatch_stub_361(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);
}

void APIENTRY shared_dispatch_stub_362(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);
}

void APIENTRY shared_dispatch_stub_363(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);
}

void APIENTRY shared_dispatch_stub_364(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);
}

void APIENTRY shared_dispatch_stub_365(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);
}

void APIENTRY shared_dispatch_stub_366(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);
}

void APIENTRY shared_dispatch_stub_367(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);
}

void APIENTRY shared_dispatch_stub_368(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);
}

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

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

void APIENTRY shared_dispatch_stub_371(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);
}

void APIENTRY shared_dispatch_stub_372(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);
}

void APIENTRY shared_dispatch_stub_373(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);
}

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

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

void APIENTRY shared_dispatch_stub_376(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);
}

void APIENTRY shared_dispatch_stub_377(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);
}

void APIENTRY shared_dispatch_stub_378(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);
}

void APIENTRY shared_dispatch_stub_379(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);
}

void APIENTRY shared_dispatch_stub_380(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);
}

void APIENTRY shared_dispatch_stub_381(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);
}

void APIENTRY shared_dispatch_stub_382(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);
}

void APIENTRY shared_dispatch_stub_383(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);
}

void APIENTRY shared_dispatch_stub_384(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);
}

void APIENTRY shared_dispatch_stub_385(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);
}

void APIENTRY shared_dispatch_stub_386(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);
}

void APIENTRY shared_dispatch_stub_387(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);
}

void APIENTRY shared_dispatch_stub_388(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);
}

void APIENTRY shared_dispatch_stub_389(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);
}

void APIENTRY shared_dispatch_stub_390(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);
}

void APIENTRY shared_dispatch_stub_391(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);
}

void APIENTRY shared_dispatch_stub_392(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);
}

void APIENTRY shared_dispatch_stub_393(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);
}

void APIENTRY shared_dispatch_stub_394(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);
}

void APIENTRY shared_dispatch_stub_395(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);
}

void APIENTRY shared_dispatch_stub_396(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);
}

void APIENTRY shared_dispatch_stub_397(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);
}

void APIENTRY shared_dispatch_stub_398(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);
}

void APIENTRY shared_dispatch_stub_399(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);
}

void APIENTRY shared_dispatch_stub_400(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);
}

void APIENTRY shared_dispatch_stub_401(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);
}

void APIENTRY shared_dispatch_stub_402(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);
}

void APIENTRY shared_dispatch_stub_403(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);
}

void APIENTRY shared_dispatch_stub_404(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);
}

void APIENTRY shared_dispatch_stub_405(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);
}

void APIENTRY shared_dispatch_stub_406(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);
}

void APIENTRY shared_dispatch_stub_407(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);
}

void APIENTRY shared_dispatch_stub_408(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);
}

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

GLuint APIENTRY shared_dispatch_stub_410(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);
}

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

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

void APIENTRY shared_dispatch_stub_413(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);
}

void APIENTRY shared_dispatch_stub_414(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);
}

void APIENTRY shared_dispatch_stub_415(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);
}

void APIENTRY shared_dispatch_stub_416(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);
}

void APIENTRY shared_dispatch_stub_417(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);
}

void APIENTRY shared_dispatch_stub_418(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);
}

GLboolean APIENTRY shared_dispatch_stub_419(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);
}

GLboolean APIENTRY shared_dispatch_stub_420(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);
}

void APIENTRY shared_dispatch_stub_421(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);
}

void APIENTRY shared_dispatch_stub_422(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);
}

void APIENTRY shared_dispatch_stub_423(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);
}

void APIENTRY shared_dispatch_stub_424(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);
}

void APIENTRY shared_dispatch_stub_425(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);
}

void APIENTRY shared_dispatch_stub_426(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);
}

void APIENTRY shared_dispatch_stub_427(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);
}

void APIENTRY shared_dispatch_stub_428(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);
}

void APIENTRY shared_dispatch_stub_429(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);
}

void APIENTRY shared_dispatch_stub_430(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);
}

void APIENTRY shared_dispatch_stub_431(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);
}

void APIENTRY shared_dispatch_stub_432(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);
}

void APIENTRY shared_dispatch_stub_433(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);
}

void APIENTRY shared_dispatch_stub_434(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);
}

const GLubyte * APIENTRY shared_dispatch_stub_435(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);
}

void APIENTRY shared_dispatch_stub_436(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);
}

void APIENTRY shared_dispatch_stub_437(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);
}

void APIENTRY shared_dispatch_stub_438(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);
}

void APIENTRY shared_dispatch_stub_439(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);
}

void APIENTRY shared_dispatch_stub_440(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);
}

void APIENTRY shared_dispatch_stub_441(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);
}

void APIENTRY shared_dispatch_stub_442(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);
}

void APIENTRY shared_dispatch_stub_443(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);
}

void APIENTRY shared_dispatch_stub_444(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);
}

void APIENTRY shared_dispatch_stub_445(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);
}

void APIENTRY shared_dispatch_stub_446(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);
}

void APIENTRY shared_dispatch_stub_447(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);
}

void APIENTRY shared_dispatch_stub_448(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);
}

void APIENTRY shared_dispatch_stub_449(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);
}

void APIENTRY shared_dispatch_stub_450(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);
}

void APIENTRY shared_dispatch_stub_451(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);
}

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

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

void APIENTRY shared_dispatch_stub_454(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);
}

void APIENTRY shared_dispatch_stub_455(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);
}

void APIENTRY shared_dispatch_stub_456(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);
}

void APIENTRY shared_dispatch_stub_457(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);
}

void APIENTRY shared_dispatch_stub_458(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);
}

void APIENTRY shared_dispatch_stub_459(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);
}

void APIENTRY shared_dispatch_stub_460(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);
}

void APIENTRY shared_dispatch_stub_461(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);
}

void APIENTRY shared_dispatch_stub_462(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);
}

void APIENTRY shared_dispatch_stub_463(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);
}

void APIENTRY shared_dispatch_stub_464(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);
}

void APIENTRY shared_dispatch_stub_465(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);
}

void APIENTRY shared_dispatch_stub_466(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);
}

void APIENTRY shared_dispatch_stub_467(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);
}

void APIENTRY shared_dispatch_stub_468(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);
}

void APIENTRY shared_dispatch_stub_469(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);
}

void APIENTRY shared_dispatch_stub_470(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);
}

void APIENTRY shared_dispatch_stub_471(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);
}

void APIENTRY shared_dispatch_stub_472(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);
}

void APIENTRY shared_dispatch_stub_473(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);
}

void APIENTRY shared_dispatch_stub_474(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);
}

void APIENTRY shared_dispatch_stub_475(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);
}

void APIENTRY shared_dispatch_stub_476(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);
}

void APIENTRY shared_dispatch_stub_477(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);
}

void APIENTRY shared_dispatch_stub_478(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);
}

void APIENTRY shared_dispatch_stub_479(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);
}

void APIENTRY shared_dispatch_stub_480(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);
}

void APIENTRY shared_dispatch_stub_481(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);
}

void APIENTRY shared_dispatch_stub_482(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);
}

void APIENTRY shared_dispatch_stub_483(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);
}

void APIENTRY shared_dispatch_stub_484(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);
}

void APIENTRY shared_dispatch_stub_485(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);
}

void APIENTRY shared_dispatch_stub_486(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);
}

void APIENTRY shared_dispatch_stub_487(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);
}

void APIENTRY shared_dispatch_stub_488(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);
}

void APIENTRY shared_dispatch_stub_489(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);
}

void APIENTRY shared_dispatch_stub_490(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);
}

void APIENTRY shared_dispatch_stub_491(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);
}

void APIENTRY shared_dispatch_stub_492(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);
}

void APIENTRY shared_dispatch_stub_493(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);
}

void APIENTRY shared_dispatch_stub_494(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);
}

void APIENTRY shared_dispatch_stub_495(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);
}

void APIENTRY shared_dispatch_stub_496(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);
}

void APIENTRY shared_dispatch_stub_497(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);
}

void APIENTRY shared_dispatch_stub_498(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);
}

void APIENTRY shared_dispatch_stub_499(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);
}

void APIENTRY shared_dispatch_stub_500(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);
}

void APIENTRY shared_dispatch_stub_501(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);
}

void APIENTRY shared_dispatch_stub_502(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);
}

void APIENTRY shared_dispatch_stub_503(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);
}

void APIENTRY shared_dispatch_stub_504(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);
}

void APIENTRY shared_dispatch_stub_505(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);
}

void APIENTRY shared_dispatch_stub_506(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);
}

void APIENTRY shared_dispatch_stub_507(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);
}

void APIENTRY shared_dispatch_stub_508(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);
}

void APIENTRY shared_dispatch_stub_509(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);
}

void APIENTRY shared_dispatch_stub_510(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);
}

void APIENTRY shared_dispatch_stub_511(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);
}

void APIENTRY shared_dispatch_stub_512(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);
}

void APIENTRY shared_dispatch_stub_513(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);
}

void APIENTRY shared_dispatch_stub_514(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);
}

void APIENTRY shared_dispatch_stub_515(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);
}

void APIENTRY shared_dispatch_stub_516(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);
}

GLboolean APIENTRY shared_dispatch_stub_517(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);
}

GLvoid * APIENTRY shared_dispatch_stub_518(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);
}

GLboolean APIENTRY shared_dispatch_stub_519(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);
}

void APIENTRY shared_dispatch_stub_520(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);
}

void APIENTRY shared_dispatch_stub_521(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);
}

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

void APIENTRY shared_dispatch_stub_523(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);
}

void APIENTRY shared_dispatch_stub_524(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);
}

void APIENTRY shared_dispatch_stub_525(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);
}

void APIENTRY shared_dispatch_stub_526(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);
}

GLboolean APIENTRY shared_dispatch_stub_527(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);
}

void APIENTRY shared_dispatch_stub_528(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);
}

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

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

GLhandleARB APIENTRY shared_dispatch_stub_531(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);
}

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

void APIENTRY shared_dispatch_stub_533(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);
}

void APIENTRY shared_dispatch_stub_534(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);
}

void APIENTRY shared_dispatch_stub_535(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);
}

GLhandleARB APIENTRY shared_dispatch_stub_536(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);
}

void APIENTRY shared_dispatch_stub_537(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);
}

void APIENTRY shared_dispatch_stub_538(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);
}

void APIENTRY shared_dispatch_stub_539(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);
}

void APIENTRY shared_dispatch_stub_540(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);
}

GLint APIENTRY shared_dispatch_stub_541(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);
}

void APIENTRY shared_dispatch_stub_542(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);
}

void APIENTRY shared_dispatch_stub_543(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);
}

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

void APIENTRY shared_dispatch_stub_545(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);
}

void APIENTRY shared_dispatch_stub_546(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);
}

void APIENTRY shared_dispatch_stub_547(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);
}

void APIENTRY shared_dispatch_stub_548(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);
}

void APIENTRY shared_dispatch_stub_549(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);
}

void APIENTRY shared_dispatch_stub_550(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);
}

void APIENTRY shared_dispatch_stub_551(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);
}

void APIENTRY shared_dispatch_stub_552(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);
}

void APIENTRY shared_dispatch_stub_553(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);
}

void APIENTRY shared_dispatch_stub_554(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);
}

void APIENTRY shared_dispatch_stub_555(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);
}

void APIENTRY shared_dispatch_stub_556(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);
}

void APIENTRY shared_dispatch_stub_557(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);
}

void APIENTRY shared_dispatch_stub_558(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);
}

void APIENTRY shared_dispatch_stub_559(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);
}

void APIENTRY shared_dispatch_stub_560(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);
}

void APIENTRY shared_dispatch_stub_561(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);
}

void APIENTRY shared_dispatch_stub_562(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);
}

void APIENTRY shared_dispatch_stub_563(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);
}

void APIENTRY shared_dispatch_stub_564(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);
}

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

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

void APIENTRY shared_dispatch_stub_567(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);
}

void APIENTRY shared_dispatch_stub_568(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);
}

GLint APIENTRY shared_dispatch_stub_569(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);
}

void APIENTRY shared_dispatch_stub_570(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);
}

void APIENTRY shared_dispatch_stub_571(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);
}

void APIENTRY shared_dispatch_stub_572(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);
}

void APIENTRY shared_dispatch_stub_573(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);
}

void APIENTRY shared_dispatch_stub_574(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);
}

void APIENTRY shared_dispatch_stub_575(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);
}

void APIENTRY shared_dispatch_stub_576(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);
}

void APIENTRY shared_dispatch_stub_577(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);
}

void APIENTRY shared_dispatch_stub_578(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);
}

void APIENTRY shared_dispatch_stub_579(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);
}

GLvoid * APIENTRY shared_dispatch_stub_580(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);
}

void APIENTRY shared_dispatch_stub_581(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);
}

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

void APIENTRY shared_dispatch_stub_583(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);
}

void APIENTRY shared_dispatch_stub_584(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);
}

void APIENTRY shared_dispatch_stub_585(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);
}

void APIENTRY shared_dispatch_stub_586(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);
}

void APIENTRY shared_dispatch_stub_587(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);
}

GLuint APIENTRY shared_dispatch_stub_588(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);
}

void APIENTRY shared_dispatch_stub_589(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);
}

void APIENTRY shared_dispatch_stub_590(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);
}

void APIENTRY shared_dispatch_stub_591(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);
}

GLenum APIENTRY shared_dispatch_stub_592(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);
}

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

GLsync APIENTRY shared_dispatch_stub_594(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);
}

void APIENTRY shared_dispatch_stub_595(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);
}

void APIENTRY shared_dispatch_stub_596(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);
}

GLboolean APIENTRY shared_dispatch_stub_597(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);
}

void APIENTRY shared_dispatch_stub_598(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);
}

void APIENTRY shared_dispatch_stub_599(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);
}

void APIENTRY shared_dispatch_stub_600(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);
}

void APIENTRY shared_dispatch_stub_601(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);
}

void APIENTRY shared_dispatch_stub_602(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);
}

void APIENTRY shared_dispatch_stub_603(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);
}

void APIENTRY shared_dispatch_stub_604(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);
}

void APIENTRY shared_dispatch_stub_605(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);
}

void APIENTRY shared_dispatch_stub_606(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);
}

void APIENTRY shared_dispatch_stub_607(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);
}

GLint APIENTRY shared_dispatch_stub_608(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);
}

void APIENTRY shared_dispatch_stub_609(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);
}

void APIENTRY shared_dispatch_stub_610(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);
}

void APIENTRY shared_dispatch_stub_611(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);
}

void APIENTRY shared_dispatch_stub_612(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);
}

void APIENTRY shared_dispatch_stub_613(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);
}

void APIENTRY shared_dispatch_stub_614(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);
}

void APIENTRY shared_dispatch_stub_615(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);
}

GLboolean APIENTRY shared_dispatch_stub_616(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);
}

void APIENTRY shared_dispatch_stub_617(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);
}

void APIENTRY shared_dispatch_stub_618(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);
}

void APIENTRY shared_dispatch_stub_619(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);
}

void APIENTRY shared_dispatch_stub_620(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);
}

void APIENTRY shared_dispatch_stub_621(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);
}

void APIENTRY shared_dispatch_stub_622(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);
}

void APIENTRY shared_dispatch_stub_623(GLuint id, GLenum target)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[623];
   ((void (APIENTRY *)(GLuint id, GLenum target)) _func)(id, target);
}

void APIENTRY shared_dispatch_stub_624(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);
}

void APIENTRY shared_dispatch_stub_625(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);
}

void APIENTRY shared_dispatch_stub_626(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);
}

void APIENTRY shared_dispatch_stub_627(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);
}

void APIENTRY shared_dispatch_stub_628(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);
}

void APIENTRY shared_dispatch_stub_629(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);
}

void APIENTRY shared_dispatch_stub_630(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);
}

void APIENTRY shared_dispatch_stub_631(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);
}

void APIENTRY shared_dispatch_stub_632(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);
}

void APIENTRY shared_dispatch_stub_633(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);
}

void APIENTRY shared_dispatch_stub_634(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);
}

void APIENTRY shared_dispatch_stub_635(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);
}

void APIENTRY shared_dispatch_stub_636(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);
}

void APIENTRY shared_dispatch_stub_637(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);
}

void APIENTRY shared_dispatch_stub_638(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);
}

void APIENTRY shared_dispatch_stub_639(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);
}

void APIENTRY shared_dispatch_stub_640(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);
}

void APIENTRY shared_dispatch_stub_641(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);
}

void APIENTRY shared_dispatch_stub_642(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);
}

void APIENTRY shared_dispatch_stub_643(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);
}

void APIENTRY shared_dispatch_stub_644(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);
}

void APIENTRY shared_dispatch_stub_645(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);
}

void APIENTRY shared_dispatch_stub_646(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);
}

void APIENTRY shared_dispatch_stub_647(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);
}

void APIENTRY shared_dispatch_stub_648(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);
}

void APIENTRY shared_dispatch_stub_649(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);
}

void APIENTRY shared_dispatch_stub_650(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);
}

void APIENTRY shared_dispatch_stub_651(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);
}

void APIENTRY shared_dispatch_stub_652(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);
}

void APIENTRY shared_dispatch_stub_653(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);
}

void APIENTRY shared_dispatch_stub_654(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);
}

void APIENTRY shared_dispatch_stub_655(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);
}

void APIENTRY shared_dispatch_stub_656(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);
}

void APIENTRY shared_dispatch_stub_657(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);
}

void APIENTRY shared_dispatch_stub_658(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);
}

void APIENTRY shared_dispatch_stub_659(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);
}

void APIENTRY shared_dispatch_stub_660(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);
}

void APIENTRY shared_dispatch_stub_661(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);
}

void APIENTRY shared_dispatch_stub_662(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);
}

void APIENTRY shared_dispatch_stub_663(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);
}

void APIENTRY shared_dispatch_stub_664(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);
}

void APIENTRY shared_dispatch_stub_665(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);
}

GLboolean APIENTRY shared_dispatch_stub_666(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);
}

void APIENTRY shared_dispatch_stub_667(void)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[667];
   ((void (APIENTRY *)(void)) _func)();
}

void APIENTRY shared_dispatch_stub_668(void)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[668];
   ((void (APIENTRY *)(void)) _func)();
}

void APIENTRY shared_dispatch_stub_669(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);
}

void APIENTRY shared_dispatch_stub_670(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);
}

void APIENTRY shared_dispatch_stub_671(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);
}

void APIENTRY shared_dispatch_stub_672(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);
}

void APIENTRY shared_dispatch_stub_673(GLclampf depth)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[673];
   ((void (APIENTRY *)(GLclampf depth)) _func)(depth);
}

void APIENTRY shared_dispatch_stub_674(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);
}

void APIENTRY shared_dispatch_stub_675(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);
}

void APIENTRY shared_dispatch_stub_676(void)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[676];
   ((void (APIENTRY *)(void)) _func)();
}

void APIENTRY shared_dispatch_stub_677(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);
}

void APIENTRY shared_dispatch_stub_678(GLuint program, GLsizei bufSize, GLsizei *length, GLenum *binaryFormat, GLvoid *binary)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[678];
   ((void (APIENTRY *)(GLuint program, GLsizei bufSize, GLsizei *length, GLenum *binaryFormat, GLvoid *binary)) _func)(program, bufSize, length, binaryFormat, binary);
}

void APIENTRY shared_dispatch_stub_679(GLuint program, GLenum binaryFormat, const GLvoid *binary, GLsizei length)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[679];
   ((void (APIENTRY *)(GLuint program, GLenum binaryFormat, const GLvoid *binary, GLsizei length)) _func)(program, binaryFormat, binary, length);
}

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

void APIENTRY shared_dispatch_stub_681(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);
}

void APIENTRY shared_dispatch_stub_682(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);
}

void APIENTRY shared_dispatch_stub_683(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);
}

GLuint APIENTRY shared_dispatch_stub_684(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);
}

GLenum APIENTRY shared_dispatch_stub_685(void)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[685];
   return ((GLenum (APIENTRY *)(void)) _func)();
}

void APIENTRY shared_dispatch_stub_686(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);
}

void APIENTRY shared_dispatch_stub_687(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);
}

void APIENTRY shared_dispatch_stub_688(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);
}

void APIENTRY shared_dispatch_stub_689(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);
}

void APIENTRY shared_dispatch_stub_690(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);
}

void APIENTRY shared_dispatch_stub_691(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);
}

void APIENTRY shared_dispatch_stub_692(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);
}

void APIENTRY shared_dispatch_stub_693(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);
}

void APIENTRY shared_dispatch_stub_694(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);
}

void APIENTRY shared_dispatch_stub_695(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);
}

void APIENTRY shared_dispatch_stub_696(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);
}

void APIENTRY shared_dispatch_stub_697(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);
}

void APIENTRY shared_dispatch_stub_698(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);
}

void APIENTRY shared_dispatch_stub_699(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);
}

void APIENTRY shared_dispatch_stub_700(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);
}

void APIENTRY shared_dispatch_stub_701(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);
}

void APIENTRY shared_dispatch_stub_702(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);
}

void APIENTRY shared_dispatch_stub_703(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);
}

void APIENTRY shared_dispatch_stub_704(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);
}

void APIENTRY shared_dispatch_stub_705(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);
}

void APIENTRY shared_dispatch_stub_706(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);
}

void APIENTRY shared_dispatch_stub_707(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);
}

void APIENTRY shared_dispatch_stub_708(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);
}

void APIENTRY shared_dispatch_stub_709(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);
}

void APIENTRY shared_dispatch_stub_710(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);
}

void APIENTRY shared_dispatch_stub_711(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);
}

void APIENTRY shared_dispatch_stub_712(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);
}

void APIENTRY shared_dispatch_stub_713(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);
}

void APIENTRY shared_dispatch_stub_714(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);
}

void APIENTRY shared_dispatch_stub_715(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);
}

void APIENTRY shared_dispatch_stub_716(GLuint buffer)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[716];
   ((void (APIENTRY *)(GLuint buffer)) _func)(buffer);
}

void APIENTRY shared_dispatch_stub_717(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);
}

void APIENTRY shared_dispatch_stub_718(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);
}

void APIENTRY shared_dispatch_stub_719(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);
}

void APIENTRY shared_dispatch_stub_720(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);
}

void APIENTRY shared_dispatch_stub_721(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);
}

void APIENTRY shared_dispatch_stub_722(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);
}

void APIENTRY shared_dispatch_stub_723(GLfloat x, GLfloat y, GLfloat z, GLfloat width, GLfloat height)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[723];
   ((void (APIENTRY *)(GLfloat x, GLfloat y, GLfloat z, GLfloat width, GLfloat height)) _func)(x, y, z, width, height);
}

void APIENTRY shared_dispatch_stub_724(const GLfloat *coords)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[724];
   ((void (APIENTRY *)(const GLfloat *coords)) _func)(coords);
}

void APIENTRY shared_dispatch_stub_725(GLint x, GLint y, GLint z, GLint width, GLint height)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[725];
   ((void (APIENTRY *)(GLint x, GLint y, GLint z, GLint width, GLint height)) _func)(x, y, z, width, height);
}

void APIENTRY shared_dispatch_stub_726(const GLint *coords)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[726];
   ((void (APIENTRY *)(const GLint *coords)) _func)(coords);
}

void APIENTRY shared_dispatch_stub_727(GLshort x, GLshort y, GLshort z, GLshort width, GLshort height)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[727];
   ((void (APIENTRY *)(GLshort x, GLshort y, GLshort z, GLshort width, GLshort height)) _func)(x, y, z, width, height);
}

void APIENTRY shared_dispatch_stub_728(const GLshort *coords)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[728];
   ((void (APIENTRY *)(const GLshort *coords)) _func)(coords);
}

void APIENTRY shared_dispatch_stub_729(GLfixed x, GLfixed y, GLfixed z, GLfixed width, GLfixed height)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[729];
   ((void (APIENTRY *)(GLfixed x, GLfixed y, GLfixed z, GLfixed width, GLfixed height)) _func)(x, y, z, width, height);
}

void APIENTRY shared_dispatch_stub_730(const GLfixed *coords)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[730];
   ((void (APIENTRY *)(const GLfixed *coords)) _func)(coords);
}

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

GLbitfield APIENTRY shared_dispatch_stub_732(GLfixed *mantissa, GLint *exponent)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[732];
   return ((GLbitfield (APIENTRY *)(GLfixed *mantissa, GLint *exponent)) _func)(mantissa, exponent);
}

void APIENTRY shared_dispatch_stub_733(GLclampf value, GLboolean invert)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[733];
   ((void (APIENTRY *)(GLclampf value, GLboolean invert)) _func)(value, invert);
}

void APIENTRY shared_dispatch_stub_734(GLenum pattern)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[734];
   ((void (APIENTRY *)(GLenum pattern)) _func)(pattern);
}

void APIENTRY shared_dispatch_stub_735(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);
}

void APIENTRY shared_dispatch_stub_736(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);
}

void APIENTRY shared_dispatch_stub_737(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);
}

void APIENTRY shared_dispatch_stub_738(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);
}

void APIENTRY shared_dispatch_stub_739(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);
}

void APIENTRY shared_dispatch_stub_740(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);
}

void APIENTRY shared_dispatch_stub_741(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);
}

void APIENTRY shared_dispatch_stub_742(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);
}

void APIENTRY shared_dispatch_stub_743(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);
}

void APIENTRY shared_dispatch_stub_744(void)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[744];
   ((void (APIENTRY *)(void)) _func)();
}

void APIENTRY shared_dispatch_stub_745(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);
}

void APIENTRY shared_dispatch_stub_746(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);
}

void APIENTRY shared_dispatch_stub_747(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);
}

void APIENTRY shared_dispatch_stub_748(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);
}

void APIENTRY shared_dispatch_stub_749(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);
}

void APIENTRY shared_dispatch_stub_750(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);
}

void APIENTRY shared_dispatch_stub_751(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);
}

void APIENTRY shared_dispatch_stub_752(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);
}

void APIENTRY shared_dispatch_stub_753(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);
}

void APIENTRY shared_dispatch_stub_754(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);
}

void APIENTRY shared_dispatch_stub_755(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);
}

void APIENTRY shared_dispatch_stub_756(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);
}

void APIENTRY shared_dispatch_stub_757(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);
}

void APIENTRY shared_dispatch_stub_758(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);
}

void APIENTRY shared_dispatch_stub_759(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);
}

void APIENTRY shared_dispatch_stub_760(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);
}

void APIENTRY shared_dispatch_stub_761(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);
}

void APIENTRY shared_dispatch_stub_762(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);
}

void APIENTRY shared_dispatch_stub_763(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);
}

void APIENTRY shared_dispatch_stub_764(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);
}

void APIENTRY shared_dispatch_stub_765(GLdouble coord)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[765];
   ((void (APIENTRY *)(GLdouble coord)) _func)(coord);
}

void APIENTRY shared_dispatch_stub_766(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);
}

void APIENTRY shared_dispatch_stub_767(GLfloat coord)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[767];
   ((void (APIENTRY *)(GLfloat coord)) _func)(coord);
}

void APIENTRY shared_dispatch_stub_768(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);
}

void APIENTRY shared_dispatch_stub_769(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);
}

void APIENTRY shared_dispatch_stub_770(void)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[770];
   ((void (APIENTRY *)(void)) _func)();
}

void APIENTRY shared_dispatch_stub_771(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);
}

void APIENTRY shared_dispatch_stub_772(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);
}

void APIENTRY shared_dispatch_stub_773(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);
}

void APIENTRY shared_dispatch_stub_774(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);
}

void APIENTRY shared_dispatch_stub_775(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);
}

void APIENTRY shared_dispatch_stub_776(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);
}

void APIENTRY shared_dispatch_stub_777(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);
}

void APIENTRY shared_dispatch_stub_778(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);
}

void APIENTRY shared_dispatch_stub_779(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);
}

void APIENTRY shared_dispatch_stub_780(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);
}

void APIENTRY shared_dispatch_stub_781(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);
}

void APIENTRY shared_dispatch_stub_782(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);
}

void APIENTRY shared_dispatch_stub_783(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);
}

void APIENTRY shared_dispatch_stub_784(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);
}

void APIENTRY shared_dispatch_stub_785(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);
}

void APIENTRY shared_dispatch_stub_786(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);
}

void APIENTRY shared_dispatch_stub_787(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);
}

void APIENTRY shared_dispatch_stub_788(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);
}

void APIENTRY shared_dispatch_stub_789(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);
}

void APIENTRY shared_dispatch_stub_790(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);
}

void APIENTRY shared_dispatch_stub_791(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);
}

void APIENTRY shared_dispatch_stub_792(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);
}

void APIENTRY shared_dispatch_stub_793(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);
}

void APIENTRY shared_dispatch_stub_794(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);
}

void APIENTRY shared_dispatch_stub_795(const GLenum *mode, const GLint *first, const GLsizei *count, GLsizei primcount, GLint modestride)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[795];
   ((void (APIENTRY *)(const GLenum *mode, const GLint *first, const GLsizei *count, GLsizei primcount, GLint modestride)) _func)(mode, first, count, primcount, modestride);
}

void APIENTRY shared_dispatch_stub_796(const GLenum *mode, const GLsizei *count, GLenum type, const GLvoid * const *indices, GLsizei primcount, GLint modestride)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[796];
   ((void (APIENTRY *)(const GLenum *mode, const GLsizei *count, GLenum type, const GLvoid * const *indices, GLsizei primcount, GLint modestride)) _func)(mode, count, type, indices, primcount, modestride);
}

GLboolean APIENTRY shared_dispatch_stub_797(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);
}

void APIENTRY shared_dispatch_stub_798(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);
}

void APIENTRY shared_dispatch_stub_799(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);
}

void APIENTRY shared_dispatch_stub_800(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);
}

void APIENTRY shared_dispatch_stub_801(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);
}

void APIENTRY shared_dispatch_stub_802(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);
}

void APIENTRY shared_dispatch_stub_803(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);
}

void APIENTRY shared_dispatch_stub_804(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);
}

void APIENTRY shared_dispatch_stub_805(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);
}

void APIENTRY shared_dispatch_stub_806(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);
}

void APIENTRY shared_dispatch_stub_807(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);
}

void APIENTRY shared_dispatch_stub_808(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);
}

void APIENTRY shared_dispatch_stub_809(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);
}

void APIENTRY shared_dispatch_stub_810(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);
}

GLboolean APIENTRY shared_dispatch_stub_811(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);
}

void APIENTRY shared_dispatch_stub_812(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);
}

void APIENTRY shared_dispatch_stub_813(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);
}

void APIENTRY shared_dispatch_stub_814(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);
}

void APIENTRY shared_dispatch_stub_815(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);
}

void APIENTRY shared_dispatch_stub_816(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);
}

void APIENTRY shared_dispatch_stub_817(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);
}

void APIENTRY shared_dispatch_stub_818(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);
}

void APIENTRY shared_dispatch_stub_819(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);
}

void APIENTRY shared_dispatch_stub_820(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);
}

void APIENTRY shared_dispatch_stub_821(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);
}

void APIENTRY shared_dispatch_stub_822(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);
}

void APIENTRY shared_dispatch_stub_823(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);
}

void APIENTRY shared_dispatch_stub_824(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);
}

void APIENTRY shared_dispatch_stub_825(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);
}

void APIENTRY shared_dispatch_stub_826(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);
}

void APIENTRY shared_dispatch_stub_827(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);
}

void APIENTRY shared_dispatch_stub_828(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);
}

void APIENTRY shared_dispatch_stub_829(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);
}

void APIENTRY shared_dispatch_stub_830(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);
}

void APIENTRY shared_dispatch_stub_831(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);
}

void APIENTRY shared_dispatch_stub_832(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);
}

void APIENTRY shared_dispatch_stub_833(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);
}

void APIENTRY shared_dispatch_stub_834(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);
}

void APIENTRY shared_dispatch_stub_835(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);
}

void APIENTRY shared_dispatch_stub_836(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);
}

void APIENTRY shared_dispatch_stub_837(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);
}

void APIENTRY shared_dispatch_stub_838(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);
}

void APIENTRY shared_dispatch_stub_839(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);
}

void APIENTRY shared_dispatch_stub_840(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);
}

void APIENTRY shared_dispatch_stub_841(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);
}

void APIENTRY shared_dispatch_stub_842(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);
}

void APIENTRY shared_dispatch_stub_843(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);
}

void APIENTRY shared_dispatch_stub_844(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);
}

void APIENTRY shared_dispatch_stub_845(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);
}

void APIENTRY shared_dispatch_stub_846(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);
}

void APIENTRY shared_dispatch_stub_847(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);
}

void APIENTRY shared_dispatch_stub_848(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);
}

void APIENTRY shared_dispatch_stub_849(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);
}

void APIENTRY shared_dispatch_stub_850(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);
}

void APIENTRY shared_dispatch_stub_851(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);
}

void APIENTRY shared_dispatch_stub_852(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);
}

void APIENTRY shared_dispatch_stub_853(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);
}

void APIENTRY shared_dispatch_stub_854(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);
}

void APIENTRY shared_dispatch_stub_855(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);
}

void APIENTRY shared_dispatch_stub_856(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);
}

void APIENTRY shared_dispatch_stub_857(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);
}

void APIENTRY shared_dispatch_stub_858(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);
}

void APIENTRY shared_dispatch_stub_859(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);
}

void APIENTRY shared_dispatch_stub_860(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);
}

void APIENTRY shared_dispatch_stub_861(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);
}

void APIENTRY shared_dispatch_stub_862(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);
}

void APIENTRY shared_dispatch_stub_863(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);
}

void APIENTRY shared_dispatch_stub_864(void)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[864];
   ((void (APIENTRY *)(void)) _func)();
}

void APIENTRY shared_dispatch_stub_865(GLuint id)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[865];
   ((void (APIENTRY *)(GLuint id)) _func)(id);
}

void APIENTRY shared_dispatch_stub_866(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);
}

void APIENTRY shared_dispatch_stub_867(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);
}

void APIENTRY shared_dispatch_stub_868(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);
}

void APIENTRY shared_dispatch_stub_869(GLuint id)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[869];
   ((void (APIENTRY *)(GLuint id)) _func)(id);
}

void APIENTRY shared_dispatch_stub_870(void)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[870];
   ((void (APIENTRY *)(void)) _func)();
}

GLuint APIENTRY shared_dispatch_stub_871(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);
}

void APIENTRY shared_dispatch_stub_872(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);
}

void APIENTRY shared_dispatch_stub_873(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);
}

void APIENTRY shared_dispatch_stub_874(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);
}

void APIENTRY shared_dispatch_stub_875(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);
}

void APIENTRY shared_dispatch_stub_876(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);
}

void APIENTRY shared_dispatch_stub_877(GLenum face)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[877];
   ((void (APIENTRY *)(GLenum face)) _func)(face);
}

void APIENTRY shared_dispatch_stub_878(GLuint array)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[878];
   ((void (APIENTRY *)(GLuint array)) _func)(array);
}

void APIENTRY shared_dispatch_stub_879(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);
}

void APIENTRY shared_dispatch_stub_880(GLsizei n, GLuint *arrays)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[880];
   ((void (APIENTRY *)(GLsizei n, GLuint *arrays)) _func)(n, arrays);
}

GLboolean APIENTRY shared_dispatch_stub_881(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);
}

void APIENTRY shared_dispatch_stub_882(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);
}

void APIENTRY shared_dispatch_stub_883(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);
}

void APIENTRY shared_dispatch_stub_884(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);
}

void APIENTRY shared_dispatch_stub_885(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);
}

void APIENTRY shared_dispatch_stub_886(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);
}

void APIENTRY shared_dispatch_stub_887(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);
}

void APIENTRY shared_dispatch_stub_888(GLuint index)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[888];
   ((void (APIENTRY *)(GLuint index)) _func)(index);
}

void APIENTRY shared_dispatch_stub_889(void)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[889];
   ((void (APIENTRY *)(void)) _func)();
}

void APIENTRY shared_dispatch_stub_890(GLenum func, GLclampx ref)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[890];
   ((void (APIENTRY *)(GLenum func, GLclampx ref)) _func)(func, ref);
}

void APIENTRY shared_dispatch_stub_891(GLclampx red, GLclampx green, GLclampx blue, GLclampx alpha)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[891];
   ((void (APIENTRY *)(GLclampx red, GLclampx green, GLclampx blue, GLclampx alpha)) _func)(red, green, blue, alpha);
}

void APIENTRY shared_dispatch_stub_892(GLclampx depth)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[892];
   ((void (APIENTRY *)(GLclampx depth)) _func)(depth);
}

void APIENTRY shared_dispatch_stub_893(GLenum plane, const GLfixed *equation)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[893];
   ((void (APIENTRY *)(GLenum plane, const GLfixed *equation)) _func)(plane, equation);
}

void APIENTRY shared_dispatch_stub_894(GLfixed red, GLfixed green, GLfixed blue, GLfixed alpha)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[894];
   ((void (APIENTRY *)(GLfixed red, GLfixed green, GLfixed blue, GLfixed alpha)) _func)(red, green, blue, alpha);
}

void APIENTRY shared_dispatch_stub_895(GLclampx zNear, GLclampx zFar)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[895];
   ((void (APIENTRY *)(GLclampx zNear, GLclampx zFar)) _func)(zNear, zFar);
}

void APIENTRY shared_dispatch_stub_896(GLenum pname, GLfixed param)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[896];
   ((void (APIENTRY *)(GLenum pname, GLfixed param)) _func)(pname, param);
}

void APIENTRY shared_dispatch_stub_897(GLenum pname, const GLfixed *params)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[897];
   ((void (APIENTRY *)(GLenum pname, const GLfixed *params)) _func)(pname, params);
}

void APIENTRY shared_dispatch_stub_898(GLfixed left, GLfixed right, GLfixed bottom, GLfixed top, GLfixed zNear, GLfixed zFar)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[898];
   ((void (APIENTRY *)(GLfixed left, GLfixed right, GLfixed bottom, GLfixed top, GLfixed zNear, GLfixed zFar)) _func)(left, right, bottom, top, zNear, zFar);
}

void APIENTRY shared_dispatch_stub_899(GLenum plane, GLfixed *equation)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[899];
   ((void (APIENTRY *)(GLenum plane, GLfixed *equation)) _func)(plane, equation);
}

void APIENTRY shared_dispatch_stub_900(GLenum pname, GLfixed *params)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[900];
   ((void (APIENTRY *)(GLenum pname, GLfixed *params)) _func)(pname, params);
}

void APIENTRY shared_dispatch_stub_901(GLenum light, GLenum pname, GLfixed *params)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[901];
   ((void (APIENTRY *)(GLenum light, GLenum pname, GLfixed *params)) _func)(light, pname, params);
}

void APIENTRY shared_dispatch_stub_902(GLenum face, GLenum pname, GLfixed *params)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[902];
   ((void (APIENTRY *)(GLenum face, GLenum pname, GLfixed *params)) _func)(face, pname, params);
}

void APIENTRY shared_dispatch_stub_903(GLenum target, GLenum pname, GLfixed *params)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[903];
   ((void (APIENTRY *)(GLenum target, GLenum pname, GLfixed *params)) _func)(target, pname, params);
}

void APIENTRY shared_dispatch_stub_904(GLenum coord, GLenum pname, GLfixed *params)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[904];
   ((void (APIENTRY *)(GLenum coord, GLenum pname, GLfixed *params)) _func)(coord, pname, params);
}

void APIENTRY shared_dispatch_stub_905(GLenum target, GLenum pname, GLfixed *params)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[905];
   ((void (APIENTRY *)(GLenum target, GLenum pname, GLfixed *params)) _func)(target, pname, params);
}

void APIENTRY shared_dispatch_stub_906(GLenum pname, GLfixed param)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[906];
   ((void (APIENTRY *)(GLenum pname, GLfixed param)) _func)(pname, param);
}

void APIENTRY shared_dispatch_stub_907(GLenum pname, const GLfixed *params)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[907];
   ((void (APIENTRY *)(GLenum pname, const GLfixed *params)) _func)(pname, params);
}

void APIENTRY shared_dispatch_stub_908(GLenum light, GLenum pname, GLfixed param)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[908];
   ((void (APIENTRY *)(GLenum light, GLenum pname, GLfixed param)) _func)(light, pname, param);
}

void APIENTRY shared_dispatch_stub_909(GLenum light, GLenum pname, const GLfixed *params)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[909];
   ((void (APIENTRY *)(GLenum light, GLenum pname, const GLfixed *params)) _func)(light, pname, params);
}

void APIENTRY shared_dispatch_stub_910(GLfixed width)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[910];
   ((void (APIENTRY *)(GLfixed width)) _func)(width);
}

void APIENTRY shared_dispatch_stub_911(const GLfixed *m)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[911];
   ((void (APIENTRY *)(const GLfixed *m)) _func)(m);
}

void APIENTRY shared_dispatch_stub_912(GLenum face, GLenum pname, GLfixed param)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[912];
   ((void (APIENTRY *)(GLenum face, GLenum pname, GLfixed param)) _func)(face, pname, param);
}

void APIENTRY shared_dispatch_stub_913(GLenum face, GLenum pname, const GLfixed *params)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[913];
   ((void (APIENTRY *)(GLenum face, GLenum pname, const GLfixed *params)) _func)(face, pname, params);
}

void APIENTRY shared_dispatch_stub_914(const GLfixed *m)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[914];
   ((void (APIENTRY *)(const GLfixed *m)) _func)(m);
}

void APIENTRY shared_dispatch_stub_915(GLenum target, GLfixed s, GLfixed t, GLfixed r, GLfixed q)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[915];
   ((void (APIENTRY *)(GLenum target, GLfixed s, GLfixed t, GLfixed r, GLfixed q)) _func)(target, s, t, r, q);
}

void APIENTRY shared_dispatch_stub_916(GLfixed nx, GLfixed ny, GLfixed nz)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[916];
   ((void (APIENTRY *)(GLfixed nx, GLfixed ny, GLfixed nz)) _func)(nx, ny, nz);
}

void APIENTRY shared_dispatch_stub_917(GLfixed left, GLfixed right, GLfixed bottom, GLfixed top, GLfixed zNear, GLfixed zFar)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[917];
   ((void (APIENTRY *)(GLfixed left, GLfixed right, GLfixed bottom, GLfixed top, GLfixed zNear, GLfixed zFar)) _func)(left, right, bottom, top, zNear, zFar);
}

void APIENTRY shared_dispatch_stub_918(GLenum pname, GLfixed param)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[918];
   ((void (APIENTRY *)(GLenum pname, GLfixed param)) _func)(pname, param);
}

void APIENTRY shared_dispatch_stub_919(GLenum pname, const GLfixed *params)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[919];
   ((void (APIENTRY *)(GLenum pname, const GLfixed *params)) _func)(pname, params);
}

void APIENTRY shared_dispatch_stub_920(GLfixed size)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[920];
   ((void (APIENTRY *)(GLfixed size)) _func)(size);
}

void APIENTRY shared_dispatch_stub_921(GLfixed factor, GLfixed units)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[921];
   ((void (APIENTRY *)(GLfixed factor, GLfixed units)) _func)(factor, units);
}

void APIENTRY shared_dispatch_stub_922(GLfixed angle, GLfixed x, GLfixed y, GLfixed z)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[922];
   ((void (APIENTRY *)(GLfixed angle, GLfixed x, GLfixed y, GLfixed z)) _func)(angle, x, y, z);
}

void APIENTRY shared_dispatch_stub_923(GLclampx value, GLboolean invert)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[923];
   ((void (APIENTRY *)(GLclampx value, GLboolean invert)) _func)(value, invert);
}

void APIENTRY shared_dispatch_stub_924(GLfixed x, GLfixed y, GLfixed z)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[924];
   ((void (APIENTRY *)(GLfixed x, GLfixed y, GLfixed z)) _func)(x, y, z);
}

void APIENTRY shared_dispatch_stub_925(GLenum target, GLenum pname, GLfixed param)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[925];
   ((void (APIENTRY *)(GLenum target, GLenum pname, GLfixed param)) _func)(target, pname, param);
}

void APIENTRY shared_dispatch_stub_926(GLenum target, GLenum pname, const GLfixed *params)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[926];
   ((void (APIENTRY *)(GLenum target, GLenum pname, const GLfixed *params)) _func)(target, pname, params);
}

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

void APIENTRY shared_dispatch_stub_928(GLenum coord, GLenum pname, const GLfixed *params)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[928];
   ((void (APIENTRY *)(GLenum coord, GLenum pname, const GLfixed *params)) _func)(coord, pname, params);
}

void APIENTRY shared_dispatch_stub_929(GLenum target, GLenum pname, GLfixed param)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[929];
   ((void (APIENTRY *)(GLenum target, GLenum pname, GLfixed param)) _func)(target, pname, param);
}

void APIENTRY shared_dispatch_stub_930(GLenum target, GLenum pname, const GLfixed *params)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[930];
   ((void (APIENTRY *)(GLenum target, GLenum pname, const GLfixed *params)) _func)(target, pname, params);
}

void APIENTRY shared_dispatch_stub_931(GLfixed x, GLfixed y, GLfixed z)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[931];
   ((void (APIENTRY *)(GLfixed x, GLfixed y, GLfixed z)) _func)(x, y, z);
}

void APIENTRY shared_dispatch_stub_932(GLenum plane, const GLfloat *equation)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[932];
   ((void (APIENTRY *)(GLenum plane, const GLfloat *equation)) _func)(plane, equation);
}

void APIENTRY shared_dispatch_stub_933(GLfloat left, GLfloat right, GLfloat bottom, GLfloat top, GLfloat zNear, GLfloat zFar)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[933];
   ((void (APIENTRY *)(GLfloat left, GLfloat right, GLfloat bottom, GLfloat top, GLfloat zNear, GLfloat zFar)) _func)(left, right, bottom, top, zNear, zFar);
}

void APIENTRY shared_dispatch_stub_934(GLenum plane, GLfloat *equation)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[934];
   ((void (APIENTRY *)(GLenum plane, GLfloat *equation)) _func)(plane, equation);
}

void APIENTRY shared_dispatch_stub_935(GLfloat left, GLfloat right, GLfloat bottom, GLfloat top, GLfloat zNear, GLfloat zFar)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[935];
   ((void (APIENTRY *)(GLfloat left, GLfloat right, GLfloat bottom, GLfloat top, GLfloat zNear, GLfloat zFar)) _func)(left, right, bottom, top, zNear, zFar);
}

void APIENTRY shared_dispatch_stub_936(GLclampd zmin, GLclampd zmax)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[936];
   ((void (APIENTRY *)(GLclampd zmin, GLclampd zmax)) _func)(zmin, zmax);
}

void APIENTRY shared_dispatch_stub_937(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);
}

void APIENTRY shared_dispatch_stub_938(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);
}

void APIENTRY shared_dispatch_stub_939(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);
}

GLenum APIENTRY shared_dispatch_stub_940(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);
}

void APIENTRY shared_dispatch_stub_941(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);
}

void APIENTRY shared_dispatch_stub_942(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);
}

void APIENTRY shared_dispatch_stub_943(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);
}

void APIENTRY shared_dispatch_stub_944(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);
}

void APIENTRY shared_dispatch_stub_945(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);
}

void APIENTRY shared_dispatch_stub_946(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);
}

void APIENTRY shared_dispatch_stub_947(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);
}

void APIENTRY shared_dispatch_stub_948(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);
}

void APIENTRY shared_dispatch_stub_949(GLenum target)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[949];
   ((void (APIENTRY *)(GLenum target)) _func)(target);
}

void APIENTRY shared_dispatch_stub_950(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);
}

void APIENTRY shared_dispatch_stub_951(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);
}

GLboolean APIENTRY shared_dispatch_stub_952(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);
}

GLboolean APIENTRY shared_dispatch_stub_953(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);
}

void APIENTRY shared_dispatch_stub_954(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);
}

void APIENTRY shared_dispatch_stub_955(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);
}

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

void APIENTRY shared_dispatch_stub_957(GLenum target, GLintptr offset, GLsizeiptr size)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[957];
   ((void (APIENTRY *)(GLenum target, GLintptr offset, GLsizeiptr size)) _func)(target, offset, size);
}

void APIENTRY shared_dispatch_stub_958(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);
}

GLint APIENTRY shared_dispatch_stub_959(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);
}

void APIENTRY shared_dispatch_stub_960(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);
}

void APIENTRY shared_dispatch_stub_961(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);
}

void APIENTRY shared_dispatch_stub_962(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);
}

void APIENTRY shared_dispatch_stub_963(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);
}

void APIENTRY shared_dispatch_stub_964(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);
}

void APIENTRY shared_dispatch_stub_965(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);
}

void APIENTRY shared_dispatch_stub_966(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);
}

void APIENTRY shared_dispatch_stub_967(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);
}

void APIENTRY shared_dispatch_stub_968(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);
}

void APIENTRY shared_dispatch_stub_969(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);
}

void APIENTRY shared_dispatch_stub_970(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);
}

void APIENTRY shared_dispatch_stub_971(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);
}

void APIENTRY shared_dispatch_stub_972(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);
}

void APIENTRY shared_dispatch_stub_973(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);
}

void APIENTRY shared_dispatch_stub_974(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);
}

void APIENTRY shared_dispatch_stub_975(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);
}

void APIENTRY shared_dispatch_stub_976(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);
}

void APIENTRY shared_dispatch_stub_977(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);
}

void APIENTRY shared_dispatch_stub_978(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);
}

void APIENTRY shared_dispatch_stub_979(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);
}

void APIENTRY shared_dispatch_stub_980(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);
}

void APIENTRY shared_dispatch_stub_981(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);
}

void APIENTRY shared_dispatch_stub_982(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);
}

void APIENTRY shared_dispatch_stub_983(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);
}

void APIENTRY shared_dispatch_stub_984(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);
}

void APIENTRY shared_dispatch_stub_985(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);
}

void APIENTRY shared_dispatch_stub_986(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);
}

void APIENTRY shared_dispatch_stub_987(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);
}

void APIENTRY shared_dispatch_stub_988(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);
}

void APIENTRY shared_dispatch_stub_989(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);
}

void APIENTRY shared_dispatch_stub_990(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);
}

void APIENTRY shared_dispatch_stub_991(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);
}

void APIENTRY shared_dispatch_stub_992(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);
}

void APIENTRY shared_dispatch_stub_993(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);
}

void APIENTRY shared_dispatch_stub_994(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);
}

void APIENTRY shared_dispatch_stub_995(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);
}

void APIENTRY shared_dispatch_stub_996(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);
}

void APIENTRY shared_dispatch_stub_997(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);
}

GLboolean APIENTRY shared_dispatch_stub_998(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);
}

void APIENTRY shared_dispatch_stub_999(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);
}

void APIENTRY shared_dispatch_stub_1000(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);
}

void APIENTRY shared_dispatch_stub_1001(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);
}

void APIENTRY shared_dispatch_stub_1002(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);
}

void APIENTRY shared_dispatch_stub_1003(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);
}

void APIENTRY shared_dispatch_stub_1004(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);
}

void APIENTRY shared_dispatch_stub_1005(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);
}

void APIENTRY shared_dispatch_stub_1006(void)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[1006];
   ((void (APIENTRY *)(void)) _func)();
}

void APIENTRY shared_dispatch_stub_1007(GLenum mode)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[1007];
   ((void (APIENTRY *)(GLenum mode)) _func)(mode);
}

void APIENTRY shared_dispatch_stub_1008(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);
}

void APIENTRY shared_dispatch_stub_1009(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);
}

void APIENTRY shared_dispatch_stub_1010(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);
}

void APIENTRY shared_dispatch_stub_1011(void)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[1011];
   ((void (APIENTRY *)(void)) _func)();
}

void APIENTRY shared_dispatch_stub_1012(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);
}

void APIENTRY shared_dispatch_stub_1013(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);
}

void APIENTRY shared_dispatch_stub_1014(GLenum mode)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[1014];
   ((void (APIENTRY *)(GLenum mode)) _func)(mode);
}

void APIENTRY shared_dispatch_stub_1015(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);
}

GLenum APIENTRY shared_dispatch_stub_1016(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);
}

GLenum APIENTRY shared_dispatch_stub_1017(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);
}

void APIENTRY shared_dispatch_stub_1018(GLuint program)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[1018];
   ((void (APIENTRY *)(GLuint program)) _func)(program);
}

GLuint APIENTRY shared_dispatch_stub_1019(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);
}

void APIENTRY shared_dispatch_stub_1020(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);
}

void APIENTRY shared_dispatch_stub_1021(void)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[1021];
   ((void (APIENTRY *)(void)) _func)();
}

void APIENTRY shared_dispatch_stub_1022(GLenum frontfunc, GLenum backfunc, GLint ref, GLuint mask)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[1022];
   ((void (APIENTRY *)(GLenum frontfunc, GLenum backfunc, GLint ref, GLuint mask)) _func)(frontfunc, backfunc, ref, mask);
}

void APIENTRY shared_dispatch_stub_1023(GLenum target, GLuint index, GLsizei count, const GLfloat *params)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[1023];
   ((void (APIENTRY *)(GLenum target, GLuint index, GLsizei count, const GLfloat *params)) _func)(target, index, count, params);
}

void APIENTRY shared_dispatch_stub_1024(GLenum target, GLuint index, GLsizei count, const GLfloat *params)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[1024];
   ((void (APIENTRY *)(GLenum target, GLuint index, GLsizei count, const GLfloat *params)) _func)(target, index, count, params);
}

void APIENTRY shared_dispatch_stub_1025(GLuint id, GLenum pname, GLint64EXT *params)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[1025];
   ((void (APIENTRY *)(GLuint id, GLenum pname, GLint64EXT *params)) _func)(id, pname, params);
}

void APIENTRY shared_dispatch_stub_1026(GLuint id, GLenum pname, GLuint64EXT *params)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[1026];
   ((void (APIENTRY *)(GLuint id, GLenum pname, GLuint64EXT *params)) _func)(id, pname, params);
}

void APIENTRY shared_dispatch_stub_1027(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);
}

void APIENTRY shared_dispatch_stub_1028(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);
}

static const mapi_func public_entries[] = {
   (mapi_func) shared_dispatch_stub_0,
   (mapi_func) shared_dispatch_stub_1,
   (mapi_func) shared_dispatch_stub_2,
   (mapi_func) shared_dispatch_stub_3,
   (mapi_func) shared_dispatch_stub_4,
   (mapi_func) shared_dispatch_stub_5,
   (mapi_func) shared_dispatch_stub_6,
   (mapi_func) shared_dispatch_stub_7,
   (mapi_func) shared_dispatch_stub_8,
   (mapi_func) shared_dispatch_stub_9,
   (mapi_func) shared_dispatch_stub_10,
   (mapi_func) shared_dispatch_stub_11,
   (mapi_func) shared_dispatch_stub_12,
   (mapi_func) shared_dispatch_stub_13,
   (mapi_func) shared_dispatch_stub_14,
   (mapi_func) shared_dispatch_stub_15,
   (mapi_func) shared_dispatch_stub_16,
   (mapi_func) shared_dispatch_stub_17,
   (mapi_func) shared_dispatch_stub_18,
   (mapi_func) shared_dispatch_stub_19,
   (mapi_func) shared_dispatch_stub_20,
   (mapi_func) shared_dispatch_stub_21,
   (mapi_func) shared_dispatch_stub_22,
   (mapi_func) shared_dispatch_stub_23,
   (mapi_func) shared_dispatch_stub_24,
   (mapi_func) shared_dispatch_stub_25,
   (mapi_func) shared_dispatch_stub_26,
   (mapi_func) shared_dispatch_stub_27,
   (mapi_func) shared_dispatch_stub_28,
   (mapi_func) shared_dispatch_stub_29,
   (mapi_func) shared_dispatch_stub_30,
   (mapi_func) shared_dispatch_stub_31,
   (mapi_func) shared_dispatch_stub_32,
   (mapi_func) shared_dispatch_stub_33,
   (mapi_func) shared_dispatch_stub_34,
   (mapi_func) shared_dispatch_stub_35,
   (mapi_func) shared_dispatch_stub_36,
   (mapi_func) shared_dispatch_stub_37,
   (mapi_func) shared_dispatch_stub_38,
   (mapi_func) shared_dispatch_stub_39,
   (mapi_func) shared_dispatch_stub_40,
   (mapi_func) shared_dispatch_stub_41,
   (mapi_func) shared_dispatch_stub_42,
   (mapi_func) shared_dispatch_stub_43,
   (mapi_func) shared_dispatch_stub_44,
   (mapi_func) shared_dispatch_stub_45,
   (mapi_func) shared_dispatch_stub_46,
   (mapi_func) shared_dispatch_stub_47,
   (mapi_func) shared_dispatch_stub_48,
   (mapi_func) shared_dispatch_stub_49,
   (mapi_func) shared_dispatch_stub_50,
   (mapi_func) shared_dispatch_stub_51,
   (mapi_func) shared_dispatch_stub_52,
   (mapi_func) shared_dispatch_stub_53,
   (mapi_func) shared_dispatch_stub_54,
   (mapi_func) shared_dispatch_stub_55,
   (mapi_func) shared_dispatch_stub_56,
   (mapi_func) shared_dispatch_stub_57,
   (mapi_func) shared_dispatch_stub_58,
   (mapi_func) shared_dispatch_stub_59,
   (mapi_func) shared_dispatch_stub_60,
   (mapi_func) shared_dispatch_stub_61,
   (mapi_func) shared_dispatch_stub_62,
   (mapi_func) shared_dispatch_stub_63,
   (mapi_func) shared_dispatch_stub_64,
   (mapi_func) shared_dispatch_stub_65,
   (mapi_func) shared_dispatch_stub_66,
   (mapi_func) shared_dispatch_stub_67,
   (mapi_func) shared_dispatch_stub_68,
   (mapi_func) shared_dispatch_stub_69,
   (mapi_func) shared_dispatch_stub_70,
   (mapi_func) shared_dispatch_stub_71,
   (mapi_func) shared_dispatch_stub_72,
   (mapi_func) shared_dispatch_stub_73,
   (mapi_func) shared_dispatch_stub_74,
   (mapi_func) shared_dispatch_stub_75,
   (mapi_func) shared_dispatch_stub_76,
   (mapi_func) shared_dispatch_stub_77,
   (mapi_func) shared_dispatch_stub_78,
   (mapi_func) shared_dispatch_stub_79,
   (mapi_func) shared_dispatch_stub_80,
   (mapi_func) shared_dispatch_stub_81,
   (mapi_func) shared_dispatch_stub_82,
   (mapi_func) shared_dispatch_stub_83,
   (mapi_func) shared_dispatch_stub_84,
   (mapi_func) shared_dispatch_stub_85,
   (mapi_func) shared_dispatch_stub_86,
   (mapi_func) shared_dispatch_stub_87,
   (mapi_func) shared_dispatch_stub_88,
   (mapi_func) shared_dispatch_stub_89,
   (mapi_func) shared_dispatch_stub_90,
   (mapi_func) shared_dispatch_stub_91,
   (mapi_func) shared_dispatch_stub_92,
   (mapi_func) shared_dispatch_stub_93,
   (mapi_func) shared_dispatch_stub_94,
   (mapi_func) shared_dispatch_stub_95,
   (mapi_func) shared_dispatch_stub_96,
   (mapi_func) shared_dispatch_stub_97,
   (mapi_func) shared_dispatch_stub_98,
   (mapi_func) shared_dispatch_stub_99,
   (mapi_func) shared_dispatch_stub_100,
   (mapi_func) shared_dispatch_stub_101,
   (mapi_func) shared_dispatch_stub_102,
   (mapi_func) shared_dispatch_stub_103,
   (mapi_func) shared_dispatch_stub_104,
   (mapi_func) shared_dispatch_stub_105,
   (mapi_func) shared_dispatch_stub_106,
   (mapi_func) shared_dispatch_stub_107,
   (mapi_func) shared_dispatch_stub_108,
   (mapi_func) shared_dispatch_stub_109,
   (mapi_func) shared_dispatch_stub_110,
   (mapi_func) shared_dispatch_stub_111,
   (mapi_func) shared_dispatch_stub_112,
   (mapi_func) shared_dispatch_stub_113,
   (mapi_func) shared_dispatch_stub_114,
   (mapi_func) shared_dispatch_stub_115,
   (mapi_func) shared_dispatch_stub_116,
   (mapi_func) shared_dispatch_stub_117,
   (mapi_func) shared_dispatch_stub_118,
   (mapi_func) shared_dispatch_stub_119,
   (mapi_func) shared_dispatch_stub_120,
   (mapi_func) shared_dispatch_stub_121,
   (mapi_func) shared_dispatch_stub_122,
   (mapi_func) shared_dispatch_stub_123,
   (mapi_func) shared_dispatch_stub_124,
   (mapi_func) shared_dispatch_stub_125,
   (mapi_func) shared_dispatch_stub_126,
   (mapi_func) shared_dispatch_stub_127,
   (mapi_func) shared_dispatch_stub_128,
   (mapi_func) shared_dispatch_stub_129,
   (mapi_func) shared_dispatch_stub_130,
   (mapi_func) shared_dispatch_stub_131,
   (mapi_func) shared_dispatch_stub_132,
   (mapi_func) shared_dispatch_stub_133,
   (mapi_func) shared_dispatch_stub_134,
   (mapi_func) shared_dispatch_stub_135,
   (mapi_func) shared_dispatch_stub_136,
   (mapi_func) shared_dispatch_stub_137,
   (mapi_func) shared_dispatch_stub_138,
   (mapi_func) shared_dispatch_stub_139,
   (mapi_func) shared_dispatch_stub_140,
   (mapi_func) shared_dispatch_stub_141,
   (mapi_func) shared_dispatch_stub_142,
   (mapi_func) shared_dispatch_stub_143,
   (mapi_func) shared_dispatch_stub_144,
   (mapi_func) shared_dispatch_stub_145,
   (mapi_func) shared_dispatch_stub_146,
   (mapi_func) shared_dispatch_stub_147,
   (mapi_func) shared_dispatch_stub_148,
   (mapi_func) shared_dispatch_stub_149,
   (mapi_func) shared_dispatch_stub_150,
   (mapi_func) shared_dispatch_stub_151,
   (mapi_func) shared_dispatch_stub_152,
   (mapi_func) shared_dispatch_stub_153,
   (mapi_func) shared_dispatch_stub_154,
   (mapi_func) shared_dispatch_stub_155,
   (mapi_func) shared_dispatch_stub_156,
   (mapi_func) shared_dispatch_stub_157,
   (mapi_func) shared_dispatch_stub_158,
   (mapi_func) shared_dispatch_stub_159,
   (mapi_func) shared_dispatch_stub_160,
   (mapi_func) shared_dispatch_stub_161,
   (mapi_func) shared_dispatch_stub_162,
   (mapi_func) shared_dispatch_stub_163,
   (mapi_func) shared_dispatch_stub_164,
   (mapi_func) shared_dispatch_stub_165,
   (mapi_func) shared_dispatch_stub_166,
   (mapi_func) shared_dispatch_stub_167,
   (mapi_func) shared_dispatch_stub_168,
   (mapi_func) shared_dispatch_stub_169,
   (mapi_func) shared_dispatch_stub_170,
   (mapi_func) shared_dispatch_stub_171,
   (mapi_func) shared_dispatch_stub_172,
   (mapi_func) shared_dispatch_stub_173,
   (mapi_func) shared_dispatch_stub_174,
   (mapi_func) shared_dispatch_stub_175,
   (mapi_func) shared_dispatch_stub_176,
   (mapi_func) shared_dispatch_stub_177,
   (mapi_func) shared_dispatch_stub_178,
   (mapi_func) shared_dispatch_stub_179,
   (mapi_func) shared_dispatch_stub_180,
   (mapi_func) shared_dispatch_stub_181,
   (mapi_func) shared_dispatch_stub_182,
   (mapi_func) shared_dispatch_stub_183,
   (mapi_func) shared_dispatch_stub_184,
   (mapi_func) shared_dispatch_stub_185,
   (mapi_func) shared_dispatch_stub_186,
   (mapi_func) shared_dispatch_stub_187,
   (mapi_func) shared_dispatch_stub_188,
   (mapi_func) shared_dispatch_stub_189,
   (mapi_func) shared_dispatch_stub_190,
   (mapi_func) shared_dispatch_stub_191,
   (mapi_func) shared_dispatch_stub_192,
   (mapi_func) shared_dispatch_stub_193,
   (mapi_func) shared_dispatch_stub_194,
   (mapi_func) shared_dispatch_stub_195,
   (mapi_func) shared_dispatch_stub_196,
   (mapi_func) shared_dispatch_stub_197,
   (mapi_func) shared_dispatch_stub_198,
   (mapi_func) shared_dispatch_stub_199,
   (mapi_func) shared_dispatch_stub_200,
   (mapi_func) shared_dispatch_stub_201,
   (mapi_func) shared_dispatch_stub_202,
   (mapi_func) shared_dispatch_stub_203,
   (mapi_func) shared_dispatch_stub_204,
   (mapi_func) shared_dispatch_stub_205,
   (mapi_func) shared_dispatch_stub_206,
   (mapi_func) shared_dispatch_stub_207,
   (mapi_func) shared_dispatch_stub_208,
   (mapi_func) shared_dispatch_stub_209,
   (mapi_func) shared_dispatch_stub_210,
   (mapi_func) shared_dispatch_stub_211,
   (mapi_func) shared_dispatch_stub_212,
   (mapi_func) shared_dispatch_stub_213,
   (mapi_func) shared_dispatch_stub_214,
   (mapi_func) shared_dispatch_stub_215,
   (mapi_func) shared_dispatch_stub_216,
   (mapi_func) shared_dispatch_stub_217,
   (mapi_func) shared_dispatch_stub_218,
   (mapi_func) shared_dispatch_stub_219,
   (mapi_func) shared_dispatch_stub_220,
   (mapi_func) shared_dispatch_stub_221,
   (mapi_func) shared_dispatch_stub_222,
   (mapi_func) shared_dispatch_stub_223,
   (mapi_func) shared_dispatch_stub_224,
   (mapi_func) shared_dispatch_stub_225,
   (mapi_func) shared_dispatch_stub_226,
   (mapi_func) shared_dispatch_stub_227,
   (mapi_func) shared_dispatch_stub_228,
   (mapi_func) shared_dispatch_stub_229,
   (mapi_func) shared_dispatch_stub_230,
   (mapi_func) shared_dispatch_stub_231,
   (mapi_func) shared_dispatch_stub_232,
   (mapi_func) shared_dispatch_stub_233,
   (mapi_func) shared_dispatch_stub_234,
   (mapi_func) shared_dispatch_stub_235,
   (mapi_func) shared_dispatch_stub_236,
   (mapi_func) shared_dispatch_stub_237,
   (mapi_func) shared_dispatch_stub_238,
   (mapi_func) shared_dispatch_stub_239,
   (mapi_func) shared_dispatch_stub_240,
   (mapi_func) shared_dispatch_stub_241,
   (mapi_func) shared_dispatch_stub_242,
   (mapi_func) shared_dispatch_stub_243,
   (mapi_func) shared_dispatch_stub_244,
   (mapi_func) shared_dispatch_stub_245,
   (mapi_func) shared_dispatch_stub_246,
   (mapi_func) shared_dispatch_stub_247,
   (mapi_func) shared_dispatch_stub_248,
   (mapi_func) shared_dispatch_stub_249,
   (mapi_func) shared_dispatch_stub_250,
   (mapi_func) shared_dispatch_stub_251,
   (mapi_func) shared_dispatch_stub_252,
   (mapi_func) shared_dispatch_stub_253,
   (mapi_func) shared_dispatch_stub_254,
   (mapi_func) shared_dispatch_stub_255,
   (mapi_func) shared_dispatch_stub_256,
   (mapi_func) shared_dispatch_stub_257,
   (mapi_func) shared_dispatch_stub_258,
   (mapi_func) shared_dispatch_stub_259,
   (mapi_func) shared_dispatch_stub_260,
   (mapi_func) shared_dispatch_stub_261,
   (mapi_func) shared_dispatch_stub_262,
   (mapi_func) shared_dispatch_stub_263,
   (mapi_func) shared_dispatch_stub_264,
   (mapi_func) shared_dispatch_stub_265,
   (mapi_func) shared_dispatch_stub_266,
   (mapi_func) shared_dispatch_stub_267,
   (mapi_func) shared_dispatch_stub_268,
   (mapi_func) shared_dispatch_stub_269,
   (mapi_func) shared_dispatch_stub_270,
   (mapi_func) shared_dispatch_stub_271,
   (mapi_func) shared_dispatch_stub_272,
   (mapi_func) shared_dispatch_stub_273,
   (mapi_func) shared_dispatch_stub_274,
   (mapi_func) shared_dispatch_stub_275,
   (mapi_func) shared_dispatch_stub_276,
   (mapi_func) shared_dispatch_stub_277,
   (mapi_func) shared_dispatch_stub_278,
   (mapi_func) shared_dispatch_stub_279,
   (mapi_func) shared_dispatch_stub_280,
   (mapi_func) shared_dispatch_stub_281,
   (mapi_func) shared_dispatch_stub_282,
   (mapi_func) shared_dispatch_stub_283,
   (mapi_func) shared_dispatch_stub_284,
   (mapi_func) shared_dispatch_stub_285,
   (mapi_func) shared_dispatch_stub_286,
   (mapi_func) shared_dispatch_stub_287,
   (mapi_func) shared_dispatch_stub_288,
   (mapi_func) shared_dispatch_stub_289,
   (mapi_func) shared_dispatch_stub_290,
   (mapi_func) shared_dispatch_stub_291,
   (mapi_func) shared_dispatch_stub_292,
   (mapi_func) shared_dispatch_stub_293,
   (mapi_func) shared_dispatch_stub_294,
   (mapi_func) shared_dispatch_stub_295,
   (mapi_func) shared_dispatch_stub_296,
   (mapi_func) shared_dispatch_stub_297,
   (mapi_func) shared_dispatch_stub_298,
   (mapi_func) shared_dispatch_stub_299,
   (mapi_func) shared_dispatch_stub_300,
   (mapi_func) shared_dispatch_stub_301,
   (mapi_func) shared_dispatch_stub_302,
   (mapi_func) shared_dispatch_stub_303,
   (mapi_func) shared_dispatch_stub_304,
   (mapi_func) shared_dispatch_stub_305,
   (mapi_func) shared_dispatch_stub_306,
   (mapi_func) shared_dispatch_stub_307,
   (mapi_func) shared_dispatch_stub_308,
   (mapi_func) shared_dispatch_stub_309,
   (mapi_func) shared_dispatch_stub_310,
   (mapi_func) shared_dispatch_stub_311,
   (mapi_func) shared_dispatch_stub_312,
   (mapi_func) shared_dispatch_stub_313,
   (mapi_func) shared_dispatch_stub_314,
   (mapi_func) shared_dispatch_stub_315,
   (mapi_func) shared_dispatch_stub_316,
   (mapi_func) shared_dispatch_stub_317,
   (mapi_func) shared_dispatch_stub_318,
   (mapi_func) shared_dispatch_stub_319,
   (mapi_func) shared_dispatch_stub_320,
   (mapi_func) shared_dispatch_stub_321,
   (mapi_func) shared_dispatch_stub_322,
   (mapi_func) shared_dispatch_stub_323,
   (mapi_func) shared_dispatch_stub_324,
   (mapi_func) shared_dispatch_stub_325,
   (mapi_func) shared_dispatch_stub_326,
   (mapi_func) shared_dispatch_stub_327,
   (mapi_func) shared_dispatch_stub_328,
   (mapi_func) shared_dispatch_stub_329,
   (mapi_func) shared_dispatch_stub_330,
   (mapi_func) shared_dispatch_stub_331,
   (mapi_func) shared_dispatch_stub_332,
   (mapi_func) shared_dispatch_stub_333,
   (mapi_func) shared_dispatch_stub_334,
   (mapi_func) shared_dispatch_stub_335,
   (mapi_func) shared_dispatch_stub_336,
   (mapi_func) shared_dispatch_stub_337,
   (mapi_func) shared_dispatch_stub_338,
   (mapi_func) shared_dispatch_stub_339,
   (mapi_func) shared_dispatch_stub_340,
   (mapi_func) shared_dispatch_stub_341,
   (mapi_func) shared_dispatch_stub_342,
   (mapi_func) shared_dispatch_stub_343,
   (mapi_func) shared_dispatch_stub_344,
   (mapi_func) shared_dispatch_stub_345,
   (mapi_func) shared_dispatch_stub_346,
   (mapi_func) shared_dispatch_stub_347,
   (mapi_func) shared_dispatch_stub_348,
   (mapi_func) shared_dispatch_stub_349,
   (mapi_func) shared_dispatch_stub_350,
   (mapi_func) shared_dispatch_stub_351,
   (mapi_func) shared_dispatch_stub_352,
   (mapi_func) shared_dispatch_stub_353,
   (mapi_func) shared_dispatch_stub_354,
   (mapi_func) shared_dispatch_stub_355,
   (mapi_func) shared_dispatch_stub_356,
   (mapi_func) shared_dispatch_stub_357,
   (mapi_func) shared_dispatch_stub_358,
   (mapi_func) shared_dispatch_stub_359,
   (mapi_func) shared_dispatch_stub_360,
   (mapi_func) shared_dispatch_stub_361,
   (mapi_func) shared_dispatch_stub_362,
   (mapi_func) shared_dispatch_stub_363,
   (mapi_func) shared_dispatch_stub_364,
   (mapi_func) shared_dispatch_stub_365,
   (mapi_func) shared_dispatch_stub_366,
   (mapi_func) shared_dispatch_stub_367,
   (mapi_func) shared_dispatch_stub_368,
   (mapi_func) shared_dispatch_stub_369,
   (mapi_func) shared_dispatch_stub_370,
   (mapi_func) shared_dispatch_stub_371,
   (mapi_func) shared_dispatch_stub_372,
   (mapi_func) shared_dispatch_stub_373,
   (mapi_func) shared_dispatch_stub_374,
   (mapi_func) shared_dispatch_stub_375,
   (mapi_func) shared_dispatch_stub_376,
   (mapi_func) shared_dispatch_stub_377,
   (mapi_func) shared_dispatch_stub_378,
   (mapi_func) shared_dispatch_stub_379,
   (mapi_func) shared_dispatch_stub_380,
   (mapi_func) shared_dispatch_stub_381,
   (mapi_func) shared_dispatch_stub_382,
   (mapi_func) shared_dispatch_stub_383,
   (mapi_func) shared_dispatch_stub_384,
   (mapi_func) shared_dispatch_stub_385,
   (mapi_func) shared_dispatch_stub_386,
   (mapi_func) shared_dispatch_stub_387,
   (mapi_func) shared_dispatch_stub_388,
   (mapi_func) shared_dispatch_stub_389,
   (mapi_func) shared_dispatch_stub_390,
   (mapi_func) shared_dispatch_stub_391,
   (mapi_func) shared_dispatch_stub_392,
   (mapi_func) shared_dispatch_stub_393,
   (mapi_func) shared_dispatch_stub_394,
   (mapi_func) shared_dispatch_stub_395,
   (mapi_func) shared_dispatch_stub_396,
   (mapi_func) shared_dispatch_stub_397,
   (mapi_func) shared_dispatch_stub_398,
   (mapi_func) shared_dispatch_stub_399,
   (mapi_func) shared_dispatch_stub_400,
   (mapi_func) shared_dispatch_stub_401,
   (mapi_func) shared_dispatch_stub_402,
   (mapi_func) shared_dispatch_stub_403,
   (mapi_func) shared_dispatch_stub_404,
   (mapi_func) shared_dispatch_stub_405,
   (mapi_func) shared_dispatch_stub_406,
   (mapi_func) shared_dispatch_stub_407,
   (mapi_func) shared_dispatch_stub_408,
   (mapi_func) shared_dispatch_stub_409,
   (mapi_func) shared_dispatch_stub_410,
   (mapi_func) shared_dispatch_stub_411,
   (mapi_func) shared_dispatch_stub_412,
   (mapi_func) shared_dispatch_stub_413,
   (mapi_func) shared_dispatch_stub_414,
   (mapi_func) shared_dispatch_stub_415,
   (mapi_func) shared_dispatch_stub_416,
   (mapi_func) shared_dispatch_stub_417,
   (mapi_func) shared_dispatch_stub_418,
   (mapi_func) shared_dispatch_stub_419,
   (mapi_func) shared_dispatch_stub_420,
   (mapi_func) shared_dispatch_stub_421,
   (mapi_func) shared_dispatch_stub_422,
   (mapi_func) shared_dispatch_stub_423,
   (mapi_func) shared_dispatch_stub_424,
   (mapi_func) shared_dispatch_stub_425,
   (mapi_func) shared_dispatch_stub_426,
   (mapi_func) shared_dispatch_stub_427,
   (mapi_func) shared_dispatch_stub_428,
   (mapi_func) shared_dispatch_stub_429,
   (mapi_func) shared_dispatch_stub_430,
   (mapi_func) shared_dispatch_stub_431,
   (mapi_func) shared_dispatch_stub_432,
   (mapi_func) shared_dispatch_stub_433,
   (mapi_func) shared_dispatch_stub_434,
   (mapi_func) shared_dispatch_stub_435,
   (mapi_func) shared_dispatch_stub_436,
   (mapi_func) shared_dispatch_stub_437,
   (mapi_func) shared_dispatch_stub_438,
   (mapi_func) shared_dispatch_stub_439,
   (mapi_func) shared_dispatch_stub_440,
   (mapi_func) shared_dispatch_stub_441,
   (mapi_func) shared_dispatch_stub_442,
   (mapi_func) shared_dispatch_stub_443,
   (mapi_func) shared_dispatch_stub_444,
   (mapi_func) shared_dispatch_stub_445,
   (mapi_func) shared_dispatch_stub_446,
   (mapi_func) shared_dispatch_stub_447,
   (mapi_func) shared_dispatch_stub_448,
   (mapi_func) shared_dispatch_stub_449,
   (mapi_func) shared_dispatch_stub_450,
   (mapi_func) shared_dispatch_stub_451,
   (mapi_func) shared_dispatch_stub_452,
   (mapi_func) shared_dispatch_stub_453,
   (mapi_func) shared_dispatch_stub_454,
   (mapi_func) shared_dispatch_stub_455,
   (mapi_func) shared_dispatch_stub_456,
   (mapi_func) shared_dispatch_stub_457,
   (mapi_func) shared_dispatch_stub_458,
   (mapi_func) shared_dispatch_stub_459,
   (mapi_func) shared_dispatch_stub_460,
   (mapi_func) shared_dispatch_stub_461,
   (mapi_func) shared_dispatch_stub_462,
   (mapi_func) shared_dispatch_stub_463,
   (mapi_func) shared_dispatch_stub_464,
   (mapi_func) shared_dispatch_stub_465,
   (mapi_func) shared_dispatch_stub_466,
   (mapi_func) shared_dispatch_stub_467,
   (mapi_func) shared_dispatch_stub_468,
   (mapi_func) shared_dispatch_stub_469,
   (mapi_func) shared_dispatch_stub_470,
   (mapi_func) shared_dispatch_stub_471,
   (mapi_func) shared_dispatch_stub_472,
   (mapi_func) shared_dispatch_stub_473,
   (mapi_func) shared_dispatch_stub_474,
   (mapi_func) shared_dispatch_stub_475,
   (mapi_func) shared_dispatch_stub_476,
   (mapi_func) shared_dispatch_stub_477,
   (mapi_func) shared_dispatch_stub_478,
   (mapi_func) shared_dispatch_stub_479,
   (mapi_func) shared_dispatch_stub_480,
   (mapi_func) shared_dispatch_stub_481,
   (mapi_func) shared_dispatch_stub_482,
   (mapi_func) shared_dispatch_stub_483,
   (mapi_func) shared_dispatch_stub_484,
   (mapi_func) shared_dispatch_stub_485,
   (mapi_func) shared_dispatch_stub_486,
   (mapi_func) shared_dispatch_stub_487,
   (mapi_func) shared_dispatch_stub_488,
   (mapi_func) shared_dispatch_stub_489,
   (mapi_func) shared_dispatch_stub_490,
   (mapi_func) shared_dispatch_stub_491,
   (mapi_func) shared_dispatch_stub_492,
   (mapi_func) shared_dispatch_stub_493,
   (mapi_func) shared_dispatch_stub_494,
   (mapi_func) shared_dispatch_stub_495,
   (mapi_func) shared_dispatch_stub_496,
   (mapi_func) shared_dispatch_stub_497,
   (mapi_func) shared_dispatch_stub_498,
   (mapi_func) shared_dispatch_stub_499,
   (mapi_func) shared_dispatch_stub_500,
   (mapi_func) shared_dispatch_stub_501,
   (mapi_func) shared_dispatch_stub_502,
   (mapi_func) shared_dispatch_stub_503,
   (mapi_func) shared_dispatch_stub_504,
   (mapi_func) shared_dispatch_stub_505,
   (mapi_func) shared_dispatch_stub_506,
   (mapi_func) shared_dispatch_stub_507,
   (mapi_func) shared_dispatch_stub_508,
   (mapi_func) shared_dispatch_stub_509,
   (mapi_func) shared_dispatch_stub_510,
   (mapi_func) shared_dispatch_stub_511,
   (mapi_func) shared_dispatch_stub_512,
   (mapi_func) shared_dispatch_stub_513,
   (mapi_func) shared_dispatch_stub_514,
   (mapi_func) shared_dispatch_stub_515,
   (mapi_func) shared_dispatch_stub_516,
   (mapi_func) shared_dispatch_stub_517,
   (mapi_func) shared_dispatch_stub_518,
   (mapi_func) shared_dispatch_stub_519,
   (mapi_func) shared_dispatch_stub_520,
   (mapi_func) shared_dispatch_stub_521,
   (mapi_func) shared_dispatch_stub_522,
   (mapi_func) shared_dispatch_stub_523,
   (mapi_func) shared_dispatch_stub_524,
   (mapi_func) shared_dispatch_stub_525,
   (mapi_func) shared_dispatch_stub_526,
   (mapi_func) shared_dispatch_stub_527,
   (mapi_func) shared_dispatch_stub_528,
   (mapi_func) shared_dispatch_stub_529,
   (mapi_func) shared_dispatch_stub_530,
   (mapi_func) shared_dispatch_stub_531,
   (mapi_func) shared_dispatch_stub_532,
   (mapi_func) shared_dispatch_stub_533,
   (mapi_func) shared_dispatch_stub_534,
   (mapi_func) shared_dispatch_stub_535,
   (mapi_func) shared_dispatch_stub_536,
   (mapi_func) shared_dispatch_stub_537,
   (mapi_func) shared_dispatch_stub_538,
   (mapi_func) shared_dispatch_stub_539,
   (mapi_func) shared_dispatch_stub_540,
   (mapi_func) shared_dispatch_stub_541,
   (mapi_func) shared_dispatch_stub_542,
   (mapi_func) shared_dispatch_stub_543,
   (mapi_func) shared_dispatch_stub_544,
   (mapi_func) shared_dispatch_stub_545,
   (mapi_func) shared_dispatch_stub_546,
   (mapi_func) shared_dispatch_stub_547,
   (mapi_func) shared_dispatch_stub_548,
   (mapi_func) shared_dispatch_stub_549,
   (mapi_func) shared_dispatch_stub_550,
   (mapi_func) shared_dispatch_stub_551,
   (mapi_func) shared_dispatch_stub_552,
   (mapi_func) shared_dispatch_stub_553,
   (mapi_func) shared_dispatch_stub_554,
   (mapi_func) shared_dispatch_stub_555,
   (mapi_func) shared_dispatch_stub_556,
   (mapi_func) shared_dispatch_stub_557,
   (mapi_func) shared_dispatch_stub_558,
   (mapi_func) shared_dispatch_stub_559,
   (mapi_func) shared_dispatch_stub_560,
   (mapi_func) shared_dispatch_stub_561,
   (mapi_func) shared_dispatch_stub_562,
   (mapi_func) shared_dispatch_stub_563,
   (mapi_func) shared_dispatch_stub_564,
   (mapi_func) shared_dispatch_stub_565,
   (mapi_func) shared_dispatch_stub_566,
   (mapi_func) shared_dispatch_stub_567,
   (mapi_func) shared_dispatch_stub_568,
   (mapi_func) shared_dispatch_stub_569,
   (mapi_func) shared_dispatch_stub_570,
   (mapi_func) shared_dispatch_stub_571,
   (mapi_func) shared_dispatch_stub_572,
   (mapi_func) shared_dispatch_stub_573,
   (mapi_func) shared_dispatch_stub_574,
   (mapi_func) shared_dispatch_stub_575,
   (mapi_func) shared_dispatch_stub_576,
   (mapi_func) shared_dispatch_stub_577,
   (mapi_func) shared_dispatch_stub_578,
   (mapi_func) shared_dispatch_stub_579,
   (mapi_func) shared_dispatch_stub_580,
   (mapi_func) shared_dispatch_stub_581,
   (mapi_func) shared_dispatch_stub_582,
   (mapi_func) shared_dispatch_stub_583,
   (mapi_func) shared_dispatch_stub_584,
   (mapi_func) shared_dispatch_stub_585,
   (mapi_func) shared_dispatch_stub_586,
   (mapi_func) shared_dispatch_stub_587,
   (mapi_func) shared_dispatch_stub_588,
   (mapi_func) shared_dispatch_stub_589,
   (mapi_func) shared_dispatch_stub_590,
   (mapi_func) shared_dispatch_stub_591,
   (mapi_func) shared_dispatch_stub_592,
   (mapi_func) shared_dispatch_stub_593,
   (mapi_func) shared_dispatch_stub_594,
   (mapi_func) shared_dispatch_stub_595,
   (mapi_func) shared_dispatch_stub_596,
   (mapi_func) shared_dispatch_stub_597,
   (mapi_func) shared_dispatch_stub_598,
   (mapi_func) shared_dispatch_stub_599,
   (mapi_func) shared_dispatch_stub_600,
   (mapi_func) shared_dispatch_stub_601,
   (mapi_func) shared_dispatch_stub_602,
   (mapi_func) shared_dispatch_stub_603,
   (mapi_func) shared_dispatch_stub_604,
   (mapi_func) shared_dispatch_stub_605,
   (mapi_func) shared_dispatch_stub_606,
   (mapi_func) shared_dispatch_stub_607,
   (mapi_func) shared_dispatch_stub_608,
   (mapi_func) shared_dispatch_stub_609,
   (mapi_func) shared_dispatch_stub_610,
   (mapi_func) shared_dispatch_stub_611,
   (mapi_func) shared_dispatch_stub_612,
   (mapi_func) shared_dispatch_stub_613,
   (mapi_func) shared_dispatch_stub_614,
   (mapi_func) shared_dispatch_stub_615,
   (mapi_func) shared_dispatch_stub_616,
   (mapi_func) shared_dispatch_stub_617,
   (mapi_func) shared_dispatch_stub_618,
   (mapi_func) shared_dispatch_stub_619,
   (mapi_func) shared_dispatch_stub_620,
   (mapi_func) shared_dispatch_stub_621,
   (mapi_func) shared_dispatch_stub_622,
   (mapi_func) shared_dispatch_stub_623,
   (mapi_func) shared_dispatch_stub_624,
   (mapi_func) shared_dispatch_stub_625,
   (mapi_func) shared_dispatch_stub_626,
   (mapi_func) shared_dispatch_stub_627,
   (mapi_func) shared_dispatch_stub_628,
   (mapi_func) shared_dispatch_stub_629,
   (mapi_func) shared_dispatch_stub_630,
   (mapi_func) shared_dispatch_stub_631,
   (mapi_func) shared_dispatch_stub_632,
   (mapi_func) shared_dispatch_stub_633,
   (mapi_func) shared_dispatch_stub_634,
   (mapi_func) shared_dispatch_stub_635,
   (mapi_func) shared_dispatch_stub_636,
   (mapi_func) shared_dispatch_stub_637,
   (mapi_func) shared_dispatch_stub_638,
   (mapi_func) shared_dispatch_stub_639,
   (mapi_func) shared_dispatch_stub_640,
   (mapi_func) shared_dispatch_stub_641,
   (mapi_func) shared_dispatch_stub_642,
   (mapi_func) shared_dispatch_stub_643,
   (mapi_func) shared_dispatch_stub_644,
   (mapi_func) shared_dispatch_stub_645,
   (mapi_func) shared_dispatch_stub_646,
   (mapi_func) shared_dispatch_stub_647,
   (mapi_func) shared_dispatch_stub_648,
   (mapi_func) shared_dispatch_stub_649,
   (mapi_func) shared_dispatch_stub_650,
   (mapi_func) shared_dispatch_stub_651,
   (mapi_func) shared_dispatch_stub_652,
   (mapi_func) shared_dispatch_stub_653,
   (mapi_func) shared_dispatch_stub_654,
   (mapi_func) shared_dispatch_stub_655,
   (mapi_func) shared_dispatch_stub_656,
   (mapi_func) shared_dispatch_stub_657,
   (mapi_func) shared_dispatch_stub_658,
   (mapi_func) shared_dispatch_stub_659,
   (mapi_func) shared_dispatch_stub_660,
   (mapi_func) shared_dispatch_stub_661,
   (mapi_func) shared_dispatch_stub_662,
   (mapi_func) shared_dispatch_stub_663,
   (mapi_func) shared_dispatch_stub_664,
   (mapi_func) shared_dispatch_stub_665,
   (mapi_func) shared_dispatch_stub_666,
   (mapi_func) shared_dispatch_stub_667,
   (mapi_func) shared_dispatch_stub_668,
   (mapi_func) shared_dispatch_stub_669,
   (mapi_func) shared_dispatch_stub_670,
   (mapi_func) shared_dispatch_stub_671,
   (mapi_func) shared_dispatch_stub_672,
   (mapi_func) shared_dispatch_stub_673,
   (mapi_func) shared_dispatch_stub_674,
   (mapi_func) shared_dispatch_stub_675,
   (mapi_func) shared_dispatch_stub_676,
   (mapi_func) shared_dispatch_stub_677,
   (mapi_func) shared_dispatch_stub_678,
   (mapi_func) shared_dispatch_stub_679,
   (mapi_func) shared_dispatch_stub_680,
   (mapi_func) shared_dispatch_stub_681,
   (mapi_func) shared_dispatch_stub_682,
   (mapi_func) shared_dispatch_stub_683,
   (mapi_func) shared_dispatch_stub_684,
   (mapi_func) shared_dispatch_stub_685,
   (mapi_func) shared_dispatch_stub_686,
   (mapi_func) shared_dispatch_stub_687,
   (mapi_func) shared_dispatch_stub_688,
   (mapi_func) shared_dispatch_stub_689,
   (mapi_func) shared_dispatch_stub_690,
   (mapi_func) shared_dispatch_stub_691,
   (mapi_func) shared_dispatch_stub_692,
   (mapi_func) shared_dispatch_stub_693,
   (mapi_func) shared_dispatch_stub_694,
   (mapi_func) shared_dispatch_stub_695,
   (mapi_func) shared_dispatch_stub_696,
   (mapi_func) shared_dispatch_stub_697,
   (mapi_func) shared_dispatch_stub_698,
   (mapi_func) shared_dispatch_stub_699,
   (mapi_func) shared_dispatch_stub_700,
   (mapi_func) shared_dispatch_stub_701,
   (mapi_func) shared_dispatch_stub_702,
   (mapi_func) shared_dispatch_stub_703,
   (mapi_func) shared_dispatch_stub_704,
   (mapi_func) shared_dispatch_stub_705,
   (mapi_func) shared_dispatch_stub_706,
   (mapi_func) shared_dispatch_stub_707,
   (mapi_func) shared_dispatch_stub_708,
   (mapi_func) shared_dispatch_stub_709,
   (mapi_func) shared_dispatch_stub_710,
   (mapi_func) shared_dispatch_stub_711,
   (mapi_func) shared_dispatch_stub_712,
   (mapi_func) shared_dispatch_stub_713,
   (mapi_func) shared_dispatch_stub_714,
   (mapi_func) shared_dispatch_stub_715,
   (mapi_func) shared_dispatch_stub_716,
   (mapi_func) shared_dispatch_stub_717,
   (mapi_func) shared_dispatch_stub_718,
   (mapi_func) shared_dispatch_stub_719,
   (mapi_func) shared_dispatch_stub_720,
   (mapi_func) shared_dispatch_stub_721,
   (mapi_func) shared_dispatch_stub_722,
   (mapi_func) shared_dispatch_stub_723,
   (mapi_func) shared_dispatch_stub_724,
   (mapi_func) shared_dispatch_stub_725,
   (mapi_func) shared_dispatch_stub_726,
   (mapi_func) shared_dispatch_stub_727,
   (mapi_func) shared_dispatch_stub_728,
   (mapi_func) shared_dispatch_stub_729,
   (mapi_func) shared_dispatch_stub_730,
   (mapi_func) shared_dispatch_stub_731,
   (mapi_func) shared_dispatch_stub_732,
   (mapi_func) shared_dispatch_stub_733,
   (mapi_func) shared_dispatch_stub_734,
   (mapi_func) shared_dispatch_stub_735,
   (mapi_func) shared_dispatch_stub_736,
   (mapi_func) shared_dispatch_stub_737,
   (mapi_func) shared_dispatch_stub_738,
   (mapi_func) shared_dispatch_stub_739,
   (mapi_func) shared_dispatch_stub_740,
   (mapi_func) shared_dispatch_stub_741,
   (mapi_func) shared_dispatch_stub_742,
   (mapi_func) shared_dispatch_stub_743,
   (mapi_func) shared_dispatch_stub_744,
   (mapi_func) shared_dispatch_stub_745,
   (mapi_func) shared_dispatch_stub_746,
   (mapi_func) shared_dispatch_stub_747,
   (mapi_func) shared_dispatch_stub_748,
   (mapi_func) shared_dispatch_stub_749,
   (mapi_func) shared_dispatch_stub_750,
   (mapi_func) shared_dispatch_stub_751,
   (mapi_func) shared_dispatch_stub_752,
   (mapi_func) shared_dispatch_stub_753,
   (mapi_func) shared_dispatch_stub_754,
   (mapi_func) shared_dispatch_stub_755,
   (mapi_func) shared_dispatch_stub_756,
   (mapi_func) shared_dispatch_stub_757,
   (mapi_func) shared_dispatch_stub_758,
   (mapi_func) shared_dispatch_stub_759,
   (mapi_func) shared_dispatch_stub_760,
   (mapi_func) shared_dispatch_stub_761,
   (mapi_func) shared_dispatch_stub_762,
   (mapi_func) shared_dispatch_stub_763,
   (mapi_func) shared_dispatch_stub_764,
   (mapi_func) shared_dispatch_stub_765,
   (mapi_func) shared_dispatch_stub_766,
   (mapi_func) shared_dispatch_stub_767,
   (mapi_func) shared_dispatch_stub_768,
   (mapi_func) shared_dispatch_stub_769,
   (mapi_func) shared_dispatch_stub_770,
   (mapi_func) shared_dispatch_stub_771,
   (mapi_func) shared_dispatch_stub_772,
   (mapi_func) shared_dispatch_stub_773,
   (mapi_func) shared_dispatch_stub_774,
   (mapi_func) shared_dispatch_stub_775,
   (mapi_func) shared_dispatch_stub_776,
   (mapi_func) shared_dispatch_stub_777,
   (mapi_func) shared_dispatch_stub_778,
   (mapi_func) shared_dispatch_stub_779,
   (mapi_func) shared_dispatch_stub_780,
   (mapi_func) shared_dispatch_stub_781,
   (mapi_func) shared_dispatch_stub_782,
   (mapi_func) shared_dispatch_stub_783,
   (mapi_func) shared_dispatch_stub_784,
   (mapi_func) shared_dispatch_stub_785,
   (mapi_func) shared_dispatch_stub_786,
   (mapi_func) shared_dispatch_stub_787,
   (mapi_func) shared_dispatch_stub_788,
   (mapi_func) shared_dispatch_stub_789,
   (mapi_func) shared_dispatch_stub_790,
   (mapi_func) shared_dispatch_stub_791,
   (mapi_func) shared_dispatch_stub_792,
   (mapi_func) shared_dispatch_stub_793,
   (mapi_func) shared_dispatch_stub_794,
   (mapi_func) shared_dispatch_stub_795,
   (mapi_func) shared_dispatch_stub_796,
   (mapi_func) shared_dispatch_stub_797,
   (mapi_func) shared_dispatch_stub_798,
   (mapi_func) shared_dispatch_stub_799,
   (mapi_func) shared_dispatch_stub_800,
   (mapi_func) shared_dispatch_stub_801,
   (mapi_func) shared_dispatch_stub_802,
   (mapi_func) shared_dispatch_stub_803,
   (mapi_func) shared_dispatch_stub_804,
   (mapi_func) shared_dispatch_stub_805,
   (mapi_func) shared_dispatch_stub_806,
   (mapi_func) shared_dispatch_stub_807,
   (mapi_func) shared_dispatch_stub_808,
   (mapi_func) shared_dispatch_stub_809,
   (mapi_func) shared_dispatch_stub_810,
   (mapi_func) shared_dispatch_stub_811,
   (mapi_func) shared_dispatch_stub_812,
   (mapi_func) shared_dispatch_stub_813,
   (mapi_func) shared_dispatch_stub_814,
   (mapi_func) shared_dispatch_stub_815,
   (mapi_func) shared_dispatch_stub_816,
   (mapi_func) shared_dispatch_stub_817,
   (mapi_func) shared_dispatch_stub_818,
   (mapi_func) shared_dispatch_stub_819,
   (mapi_func) shared_dispatch_stub_820,
   (mapi_func) shared_dispatch_stub_821,
   (mapi_func) shared_dispatch_stub_822,
   (mapi_func) shared_dispatch_stub_823,
   (mapi_func) shared_dispatch_stub_824,
   (mapi_func) shared_dispatch_stub_825,
   (mapi_func) shared_dispatch_stub_826,
   (mapi_func) shared_dispatch_stub_827,
   (mapi_func) shared_dispatch_stub_828,
   (mapi_func) shared_dispatch_stub_829,
   (mapi_func) shared_dispatch_stub_830,
   (mapi_func) shared_dispatch_stub_831,
   (mapi_func) shared_dispatch_stub_832,
   (mapi_func) shared_dispatch_stub_833,
   (mapi_func) shared_dispatch_stub_834,
   (mapi_func) shared_dispatch_stub_835,
   (mapi_func) shared_dispatch_stub_836,
   (mapi_func) shared_dispatch_stub_837,
   (mapi_func) shared_dispatch_stub_838,
   (mapi_func) shared_dispatch_stub_839,
   (mapi_func) shared_dispatch_stub_840,
   (mapi_func) shared_dispatch_stub_841,
   (mapi_func) shared_dispatch_stub_842,
   (mapi_func) shared_dispatch_stub_843,
   (mapi_func) shared_dispatch_stub_844,
   (mapi_func) shared_dispatch_stub_845,
   (mapi_func) shared_dispatch_stub_846,
   (mapi_func) shared_dispatch_stub_847,
   (mapi_func) shared_dispatch_stub_848,
   (mapi_func) shared_dispatch_stub_849,
   (mapi_func) shared_dispatch_stub_850,
   (mapi_func) shared_dispatch_stub_851,
   (mapi_func) shared_dispatch_stub_852,
   (mapi_func) shared_dispatch_stub_853,
   (mapi_func) shared_dispatch_stub_854,
   (mapi_func) shared_dispatch_stub_855,
   (mapi_func) shared_dispatch_stub_856,
   (mapi_func) shared_dispatch_stub_857,
   (mapi_func) shared_dispatch_stub_858,
   (mapi_func) shared_dispatch_stub_859,
   (mapi_func) shared_dispatch_stub_860,
   (mapi_func) shared_dispatch_stub_861,
   (mapi_func) shared_dispatch_stub_862,
   (mapi_func) shared_dispatch_stub_863,
   (mapi_func) shared_dispatch_stub_864,
   (mapi_func) shared_dispatch_stub_865,
   (mapi_func) shared_dispatch_stub_866,
   (mapi_func) shared_dispatch_stub_867,
   (mapi_func) shared_dispatch_stub_868,
   (mapi_func) shared_dispatch_stub_869,
   (mapi_func) shared_dispatch_stub_870,
   (mapi_func) shared_dispatch_stub_871,
   (mapi_func) shared_dispatch_stub_872,
   (mapi_func) shared_dispatch_stub_873,
   (mapi_func) shared_dispatch_stub_874,
   (mapi_func) shared_dispatch_stub_875,
   (mapi_func) shared_dispatch_stub_876,
   (mapi_func) shared_dispatch_stub_877,
   (mapi_func) shared_dispatch_stub_878,
   (mapi_func) shared_dispatch_stub_879,
   (mapi_func) shared_dispatch_stub_880,
   (mapi_func) shared_dispatch_stub_881,
   (mapi_func) shared_dispatch_stub_882,
   (mapi_func) shared_dispatch_stub_883,
   (mapi_func) shared_dispatch_stub_884,
   (mapi_func) shared_dispatch_stub_885,
   (mapi_func) shared_dispatch_stub_886,
   (mapi_func) shared_dispatch_stub_887,
   (mapi_func) shared_dispatch_stub_888,
   (mapi_func) shared_dispatch_stub_889,
   (mapi_func) shared_dispatch_stub_890,
   (mapi_func) shared_dispatch_stub_891,
   (mapi_func) shared_dispatch_stub_892,
   (mapi_func) shared_dispatch_stub_893,
   (mapi_func) shared_dispatch_stub_894,
   (mapi_func) shared_dispatch_stub_895,
   (mapi_func) shared_dispatch_stub_896,
   (mapi_func) shared_dispatch_stub_897,
   (mapi_func) shared_dispatch_stub_898,
   (mapi_func) shared_dispatch_stub_899,
   (mapi_func) shared_dispatch_stub_900,
   (mapi_func) shared_dispatch_stub_901,
   (mapi_func) shared_dispatch_stub_902,
   (mapi_func) shared_dispatch_stub_903,
   (mapi_func) shared_dispatch_stub_904,
   (mapi_func) shared_dispatch_stub_905,
   (mapi_func) shared_dispatch_stub_906,
   (mapi_func) shared_dispatch_stub_907,
   (mapi_func) shared_dispatch_stub_908,
   (mapi_func) shared_dispatch_stub_909,
   (mapi_func) shared_dispatch_stub_910,
   (mapi_func) shared_dispatch_stub_911,
   (mapi_func) shared_dispatch_stub_912,
   (mapi_func) shared_dispatch_stub_913,
   (mapi_func) shared_dispatch_stub_914,
   (mapi_func) shared_dispatch_stub_915,
   (mapi_func) shared_dispatch_stub_916,
   (mapi_func) shared_dispatch_stub_917,
   (mapi_func) shared_dispatch_stub_918,
   (mapi_func) shared_dispatch_stub_919,
   (mapi_func) shared_dispatch_stub_920,
   (mapi_func) shared_dispatch_stub_921,
   (mapi_func) shared_dispatch_stub_922,
   (mapi_func) shared_dispatch_stub_923,
   (mapi_func) shared_dispatch_stub_924,
   (mapi_func) shared_dispatch_stub_925,
   (mapi_func) shared_dispatch_stub_926,
   (mapi_func) shared_dispatch_stub_927,
   (mapi_func) shared_dispatch_stub_928,
   (mapi_func) shared_dispatch_stub_929,
   (mapi_func) shared_dispatch_stub_930,
   (mapi_func) shared_dispatch_stub_931,
   (mapi_func) shared_dispatch_stub_932,
   (mapi_func) shared_dispatch_stub_933,
   (mapi_func) shared_dispatch_stub_934,
   (mapi_func) shared_dispatch_stub_935,
   (mapi_func) shared_dispatch_stub_936,
   (mapi_func) shared_dispatch_stub_937,
   (mapi_func) shared_dispatch_stub_938,
   (mapi_func) shared_dispatch_stub_939,
   (mapi_func) shared_dispatch_stub_940,
   (mapi_func) shared_dispatch_stub_941,
   (mapi_func) shared_dispatch_stub_942,
   (mapi_func) shared_dispatch_stub_943,
   (mapi_func) shared_dispatch_stub_944,
   (mapi_func) shared_dispatch_stub_945,
   (mapi_func) shared_dispatch_stub_946,
   (mapi_func) shared_dispatch_stub_947,
   (mapi_func) shared_dispatch_stub_948,
   (mapi_func) shared_dispatch_stub_949,
   (mapi_func) shared_dispatch_stub_950,
   (mapi_func) shared_dispatch_stub_951,
   (mapi_func) shared_dispatch_stub_952,
   (mapi_func) shared_dispatch_stub_953,
   (mapi_func) shared_dispatch_stub_954,
   (mapi_func) shared_dispatch_stub_955,
   (mapi_func) shared_dispatch_stub_956,
   (mapi_func) shared_dispatch_stub_957,
   (mapi_func) shared_dispatch_stub_958,
   (mapi_func) shared_dispatch_stub_959,
   (mapi_func) shared_dispatch_stub_960,
   (mapi_func) shared_dispatch_stub_961,
   (mapi_func) shared_dispatch_stub_962,
   (mapi_func) shared_dispatch_stub_963,
   (mapi_func) shared_dispatch_stub_964,
   (mapi_func) shared_dispatch_stub_965,
   (mapi_func) shared_dispatch_stub_966,
   (mapi_func) shared_dispatch_stub_967,
   (mapi_func) shared_dispatch_stub_968,
   (mapi_func) shared_dispatch_stub_969,
   (mapi_func) shared_dispatch_stub_970,
   (mapi_func) shared_dispatch_stub_971,
   (mapi_func) shared_dispatch_stub_972,
   (mapi_func) shared_dispatch_stub_973,
   (mapi_func) shared_dispatch_stub_974,
   (mapi_func) shared_dispatch_stub_975,
   (mapi_func) shared_dispatch_stub_976,
   (mapi_func) shared_dispatch_stub_977,
   (mapi_func) shared_dispatch_stub_978,
   (mapi_func) shared_dispatch_stub_979,
   (mapi_func) shared_dispatch_stub_980,
   (mapi_func) shared_dispatch_stub_981,
   (mapi_func) shared_dispatch_stub_982,
   (mapi_func) shared_dispatch_stub_983,
   (mapi_func) shared_dispatch_stub_984,
   (mapi_func) shared_dispatch_stub_985,
   (mapi_func) shared_dispatch_stub_986,
   (mapi_func) shared_dispatch_stub_987,
   (mapi_func) shared_dispatch_stub_988,
   (mapi_func) shared_dispatch_stub_989,
   (mapi_func) shared_dispatch_stub_990,
   (mapi_func) shared_dispatch_stub_991,
   (mapi_func) shared_dispatch_stub_992,
   (mapi_func) shared_dispatch_stub_993,
   (mapi_func) shared_dispatch_stub_994,
   (mapi_func) shared_dispatch_stub_995,
   (mapi_func) shared_dispatch_stub_996,
   (mapi_func) shared_dispatch_stub_997,
   (mapi_func) shared_dispatch_stub_998,
   (mapi_func) shared_dispatch_stub_999,
   (mapi_func) shared_dispatch_stub_1000,
   (mapi_func) shared_dispatch_stub_1001,
   (mapi_func) shared_dispatch_stub_1002,
   (mapi_func) shared_dispatch_stub_1003,
   (mapi_func) shared_dispatch_stub_1004,
   (mapi_func) shared_dispatch_stub_1005,
   (mapi_func) shared_dispatch_stub_1006,
   (mapi_func) shared_dispatch_stub_1007,
   (mapi_func) shared_dispatch_stub_1008,
   (mapi_func) shared_dispatch_stub_1009,
   (mapi_func) shared_dispatch_stub_1010,
   (mapi_func) shared_dispatch_stub_1011,
   (mapi_func) shared_dispatch_stub_1012,
   (mapi_func) shared_dispatch_stub_1013,
   (mapi_func) shared_dispatch_stub_1014,
   (mapi_func) shared_dispatch_stub_1015,
   (mapi_func) shared_dispatch_stub_1016,
   (mapi_func) shared_dispatch_stub_1017,
   (mapi_func) shared_dispatch_stub_1018,
   (mapi_func) shared_dispatch_stub_1019,
   (mapi_func) shared_dispatch_stub_1020,
   (mapi_func) shared_dispatch_stub_1021,
   (mapi_func) shared_dispatch_stub_1022,
   (mapi_func) shared_dispatch_stub_1023,
   (mapi_func) shared_dispatch_stub_1024,
   (mapi_func) shared_dispatch_stub_1025,
   (mapi_func) shared_dispatch_stub_1026,
   (mapi_func) shared_dispatch_stub_1027,
   (mapi_func) shared_dispatch_stub_1028
};
#undef MAPI_TMP_PUBLIC_ENTRIES
#endif /* MAPI_TMP_PUBLIC_ENTRIES */

#ifdef MAPI_TMP_STUB_ASM_GCC
__asm__(
".hidden ""shared_dispatch_stub_0""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_0")"\n"
"\t"STUB_ASM_CODE("0")"\n"

".hidden ""shared_dispatch_stub_1""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_1")"\n"
"\t"STUB_ASM_CODE("1")"\n"

".hidden ""shared_dispatch_stub_2""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_2")"\n"
"\t"STUB_ASM_CODE("2")"\n"

".hidden ""shared_dispatch_stub_3""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_3")"\n"
"\t"STUB_ASM_CODE("3")"\n"

".hidden ""shared_dispatch_stub_4""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_4")"\n"
"\t"STUB_ASM_CODE("4")"\n"

".hidden ""shared_dispatch_stub_5""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_5")"\n"
"\t"STUB_ASM_CODE("5")"\n"

".hidden ""shared_dispatch_stub_6""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_6")"\n"
"\t"STUB_ASM_CODE("6")"\n"

".hidden ""shared_dispatch_stub_7""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_7")"\n"
"\t"STUB_ASM_CODE("7")"\n"

".hidden ""shared_dispatch_stub_8""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_8")"\n"
"\t"STUB_ASM_CODE("8")"\n"

".hidden ""shared_dispatch_stub_9""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_9")"\n"
"\t"STUB_ASM_CODE("9")"\n"

".hidden ""shared_dispatch_stub_10""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_10")"\n"
"\t"STUB_ASM_CODE("10")"\n"

".hidden ""shared_dispatch_stub_11""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_11")"\n"
"\t"STUB_ASM_CODE("11")"\n"

".hidden ""shared_dispatch_stub_12""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_12")"\n"
"\t"STUB_ASM_CODE("12")"\n"

".hidden ""shared_dispatch_stub_13""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_13")"\n"
"\t"STUB_ASM_CODE("13")"\n"

".hidden ""shared_dispatch_stub_14""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_14")"\n"
"\t"STUB_ASM_CODE("14")"\n"

".hidden ""shared_dispatch_stub_15""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_15")"\n"
"\t"STUB_ASM_CODE("15")"\n"

".hidden ""shared_dispatch_stub_16""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_16")"\n"
"\t"STUB_ASM_CODE("16")"\n"

".hidden ""shared_dispatch_stub_17""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_17")"\n"
"\t"STUB_ASM_CODE("17")"\n"

".hidden ""shared_dispatch_stub_18""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_18")"\n"
"\t"STUB_ASM_CODE("18")"\n"

".hidden ""shared_dispatch_stub_19""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_19")"\n"
"\t"STUB_ASM_CODE("19")"\n"

".hidden ""shared_dispatch_stub_20""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_20")"\n"
"\t"STUB_ASM_CODE("20")"\n"

".hidden ""shared_dispatch_stub_21""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_21")"\n"
"\t"STUB_ASM_CODE("21")"\n"

".hidden ""shared_dispatch_stub_22""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_22")"\n"
"\t"STUB_ASM_CODE("22")"\n"

".hidden ""shared_dispatch_stub_23""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_23")"\n"
"\t"STUB_ASM_CODE("23")"\n"

".hidden ""shared_dispatch_stub_24""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_24")"\n"
"\t"STUB_ASM_CODE("24")"\n"

".hidden ""shared_dispatch_stub_25""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_25")"\n"
"\t"STUB_ASM_CODE("25")"\n"

".hidden ""shared_dispatch_stub_26""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_26")"\n"
"\t"STUB_ASM_CODE("26")"\n"

".hidden ""shared_dispatch_stub_27""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_27")"\n"
"\t"STUB_ASM_CODE("27")"\n"

".hidden ""shared_dispatch_stub_28""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_28")"\n"
"\t"STUB_ASM_CODE("28")"\n"

".hidden ""shared_dispatch_stub_29""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_29")"\n"
"\t"STUB_ASM_CODE("29")"\n"

".hidden ""shared_dispatch_stub_30""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_30")"\n"
"\t"STUB_ASM_CODE("30")"\n"

".hidden ""shared_dispatch_stub_31""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_31")"\n"
"\t"STUB_ASM_CODE("31")"\n"

".hidden ""shared_dispatch_stub_32""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_32")"\n"
"\t"STUB_ASM_CODE("32")"\n"

".hidden ""shared_dispatch_stub_33""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_33")"\n"
"\t"STUB_ASM_CODE("33")"\n"

".hidden ""shared_dispatch_stub_34""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_34")"\n"
"\t"STUB_ASM_CODE("34")"\n"

".hidden ""shared_dispatch_stub_35""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_35")"\n"
"\t"STUB_ASM_CODE("35")"\n"

".hidden ""shared_dispatch_stub_36""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_36")"\n"
"\t"STUB_ASM_CODE("36")"\n"

".hidden ""shared_dispatch_stub_37""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_37")"\n"
"\t"STUB_ASM_CODE("37")"\n"

".hidden ""shared_dispatch_stub_38""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_38")"\n"
"\t"STUB_ASM_CODE("38")"\n"

".hidden ""shared_dispatch_stub_39""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_39")"\n"
"\t"STUB_ASM_CODE("39")"\n"

".hidden ""shared_dispatch_stub_40""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_40")"\n"
"\t"STUB_ASM_CODE("40")"\n"

".hidden ""shared_dispatch_stub_41""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_41")"\n"
"\t"STUB_ASM_CODE("41")"\n"

".hidden ""shared_dispatch_stub_42""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_42")"\n"
"\t"STUB_ASM_CODE("42")"\n"

".hidden ""shared_dispatch_stub_43""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_43")"\n"
"\t"STUB_ASM_CODE("43")"\n"

".hidden ""shared_dispatch_stub_44""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_44")"\n"
"\t"STUB_ASM_CODE("44")"\n"

".hidden ""shared_dispatch_stub_45""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_45")"\n"
"\t"STUB_ASM_CODE("45")"\n"

".hidden ""shared_dispatch_stub_46""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_46")"\n"
"\t"STUB_ASM_CODE("46")"\n"

".hidden ""shared_dispatch_stub_47""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_47")"\n"
"\t"STUB_ASM_CODE("47")"\n"

".hidden ""shared_dispatch_stub_48""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_48")"\n"
"\t"STUB_ASM_CODE("48")"\n"

".hidden ""shared_dispatch_stub_49""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_49")"\n"
"\t"STUB_ASM_CODE("49")"\n"

".hidden ""shared_dispatch_stub_50""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_50")"\n"
"\t"STUB_ASM_CODE("50")"\n"

".hidden ""shared_dispatch_stub_51""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_51")"\n"
"\t"STUB_ASM_CODE("51")"\n"

".hidden ""shared_dispatch_stub_52""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_52")"\n"
"\t"STUB_ASM_CODE("52")"\n"

".hidden ""shared_dispatch_stub_53""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_53")"\n"
"\t"STUB_ASM_CODE("53")"\n"

".hidden ""shared_dispatch_stub_54""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_54")"\n"
"\t"STUB_ASM_CODE("54")"\n"

".hidden ""shared_dispatch_stub_55""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_55")"\n"
"\t"STUB_ASM_CODE("55")"\n"

".hidden ""shared_dispatch_stub_56""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_56")"\n"
"\t"STUB_ASM_CODE("56")"\n"

".hidden ""shared_dispatch_stub_57""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_57")"\n"
"\t"STUB_ASM_CODE("57")"\n"

".hidden ""shared_dispatch_stub_58""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_58")"\n"
"\t"STUB_ASM_CODE("58")"\n"

".hidden ""shared_dispatch_stub_59""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_59")"\n"
"\t"STUB_ASM_CODE("59")"\n"

".hidden ""shared_dispatch_stub_60""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_60")"\n"
"\t"STUB_ASM_CODE("60")"\n"

".hidden ""shared_dispatch_stub_61""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_61")"\n"
"\t"STUB_ASM_CODE("61")"\n"

".hidden ""shared_dispatch_stub_62""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_62")"\n"
"\t"STUB_ASM_CODE("62")"\n"

".hidden ""shared_dispatch_stub_63""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_63")"\n"
"\t"STUB_ASM_CODE("63")"\n"

".hidden ""shared_dispatch_stub_64""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_64")"\n"
"\t"STUB_ASM_CODE("64")"\n"

".hidden ""shared_dispatch_stub_65""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_65")"\n"
"\t"STUB_ASM_CODE("65")"\n"

".hidden ""shared_dispatch_stub_66""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_66")"\n"
"\t"STUB_ASM_CODE("66")"\n"

".hidden ""shared_dispatch_stub_67""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_67")"\n"
"\t"STUB_ASM_CODE("67")"\n"

".hidden ""shared_dispatch_stub_68""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_68")"\n"
"\t"STUB_ASM_CODE("68")"\n"

".hidden ""shared_dispatch_stub_69""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_69")"\n"
"\t"STUB_ASM_CODE("69")"\n"

".hidden ""shared_dispatch_stub_70""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_70")"\n"
"\t"STUB_ASM_CODE("70")"\n"

".hidden ""shared_dispatch_stub_71""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_71")"\n"
"\t"STUB_ASM_CODE("71")"\n"

".hidden ""shared_dispatch_stub_72""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_72")"\n"
"\t"STUB_ASM_CODE("72")"\n"

".hidden ""shared_dispatch_stub_73""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_73")"\n"
"\t"STUB_ASM_CODE("73")"\n"

".hidden ""shared_dispatch_stub_74""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_74")"\n"
"\t"STUB_ASM_CODE("74")"\n"

".hidden ""shared_dispatch_stub_75""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_75")"\n"
"\t"STUB_ASM_CODE("75")"\n"

".hidden ""shared_dispatch_stub_76""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_76")"\n"
"\t"STUB_ASM_CODE("76")"\n"

".hidden ""shared_dispatch_stub_77""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_77")"\n"
"\t"STUB_ASM_CODE("77")"\n"

".hidden ""shared_dispatch_stub_78""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_78")"\n"
"\t"STUB_ASM_CODE("78")"\n"

".hidden ""shared_dispatch_stub_79""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_79")"\n"
"\t"STUB_ASM_CODE("79")"\n"

".hidden ""shared_dispatch_stub_80""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_80")"\n"
"\t"STUB_ASM_CODE("80")"\n"

".hidden ""shared_dispatch_stub_81""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_81")"\n"
"\t"STUB_ASM_CODE("81")"\n"

".hidden ""shared_dispatch_stub_82""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_82")"\n"
"\t"STUB_ASM_CODE("82")"\n"

".hidden ""shared_dispatch_stub_83""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_83")"\n"
"\t"STUB_ASM_CODE("83")"\n"

".hidden ""shared_dispatch_stub_84""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_84")"\n"
"\t"STUB_ASM_CODE("84")"\n"

".hidden ""shared_dispatch_stub_85""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_85")"\n"
"\t"STUB_ASM_CODE("85")"\n"

".hidden ""shared_dispatch_stub_86""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_86")"\n"
"\t"STUB_ASM_CODE("86")"\n"

".hidden ""shared_dispatch_stub_87""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_87")"\n"
"\t"STUB_ASM_CODE("87")"\n"

".hidden ""shared_dispatch_stub_88""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_88")"\n"
"\t"STUB_ASM_CODE("88")"\n"

".hidden ""shared_dispatch_stub_89""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_89")"\n"
"\t"STUB_ASM_CODE("89")"\n"

".hidden ""shared_dispatch_stub_90""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_90")"\n"
"\t"STUB_ASM_CODE("90")"\n"

".hidden ""shared_dispatch_stub_91""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_91")"\n"
"\t"STUB_ASM_CODE("91")"\n"

".hidden ""shared_dispatch_stub_92""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_92")"\n"
"\t"STUB_ASM_CODE("92")"\n"

".hidden ""shared_dispatch_stub_93""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_93")"\n"
"\t"STUB_ASM_CODE("93")"\n"

".hidden ""shared_dispatch_stub_94""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_94")"\n"
"\t"STUB_ASM_CODE("94")"\n"

".hidden ""shared_dispatch_stub_95""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_95")"\n"
"\t"STUB_ASM_CODE("95")"\n"

".hidden ""shared_dispatch_stub_96""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_96")"\n"
"\t"STUB_ASM_CODE("96")"\n"

".hidden ""shared_dispatch_stub_97""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_97")"\n"
"\t"STUB_ASM_CODE("97")"\n"

".hidden ""shared_dispatch_stub_98""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_98")"\n"
"\t"STUB_ASM_CODE("98")"\n"

".hidden ""shared_dispatch_stub_99""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_99")"\n"
"\t"STUB_ASM_CODE("99")"\n"

".hidden ""shared_dispatch_stub_100""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_100")"\n"
"\t"STUB_ASM_CODE("100")"\n"

".hidden ""shared_dispatch_stub_101""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_101")"\n"
"\t"STUB_ASM_CODE("101")"\n"

".hidden ""shared_dispatch_stub_102""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_102")"\n"
"\t"STUB_ASM_CODE("102")"\n"

".hidden ""shared_dispatch_stub_103""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_103")"\n"
"\t"STUB_ASM_CODE("103")"\n"

".hidden ""shared_dispatch_stub_104""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_104")"\n"
"\t"STUB_ASM_CODE("104")"\n"

".hidden ""shared_dispatch_stub_105""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_105")"\n"
"\t"STUB_ASM_CODE("105")"\n"

".hidden ""shared_dispatch_stub_106""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_106")"\n"
"\t"STUB_ASM_CODE("106")"\n"

".hidden ""shared_dispatch_stub_107""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_107")"\n"
"\t"STUB_ASM_CODE("107")"\n"

".hidden ""shared_dispatch_stub_108""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_108")"\n"
"\t"STUB_ASM_CODE("108")"\n"

".hidden ""shared_dispatch_stub_109""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_109")"\n"
"\t"STUB_ASM_CODE("109")"\n"

".hidden ""shared_dispatch_stub_110""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_110")"\n"
"\t"STUB_ASM_CODE("110")"\n"

".hidden ""shared_dispatch_stub_111""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_111")"\n"
"\t"STUB_ASM_CODE("111")"\n"

".hidden ""shared_dispatch_stub_112""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_112")"\n"
"\t"STUB_ASM_CODE("112")"\n"

".hidden ""shared_dispatch_stub_113""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_113")"\n"
"\t"STUB_ASM_CODE("113")"\n"

".hidden ""shared_dispatch_stub_114""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_114")"\n"
"\t"STUB_ASM_CODE("114")"\n"

".hidden ""shared_dispatch_stub_115""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_115")"\n"
"\t"STUB_ASM_CODE("115")"\n"

".hidden ""shared_dispatch_stub_116""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_116")"\n"
"\t"STUB_ASM_CODE("116")"\n"

".hidden ""shared_dispatch_stub_117""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_117")"\n"
"\t"STUB_ASM_CODE("117")"\n"

".hidden ""shared_dispatch_stub_118""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_118")"\n"
"\t"STUB_ASM_CODE("118")"\n"

".hidden ""shared_dispatch_stub_119""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_119")"\n"
"\t"STUB_ASM_CODE("119")"\n"

".hidden ""shared_dispatch_stub_120""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_120")"\n"
"\t"STUB_ASM_CODE("120")"\n"

".hidden ""shared_dispatch_stub_121""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_121")"\n"
"\t"STUB_ASM_CODE("121")"\n"

".hidden ""shared_dispatch_stub_122""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_122")"\n"
"\t"STUB_ASM_CODE("122")"\n"

".hidden ""shared_dispatch_stub_123""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_123")"\n"
"\t"STUB_ASM_CODE("123")"\n"

".hidden ""shared_dispatch_stub_124""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_124")"\n"
"\t"STUB_ASM_CODE("124")"\n"

".hidden ""shared_dispatch_stub_125""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_125")"\n"
"\t"STUB_ASM_CODE("125")"\n"

".hidden ""shared_dispatch_stub_126""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_126")"\n"
"\t"STUB_ASM_CODE("126")"\n"

".hidden ""shared_dispatch_stub_127""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_127")"\n"
"\t"STUB_ASM_CODE("127")"\n"

".hidden ""shared_dispatch_stub_128""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_128")"\n"
"\t"STUB_ASM_CODE("128")"\n"

".hidden ""shared_dispatch_stub_129""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_129")"\n"
"\t"STUB_ASM_CODE("129")"\n"

".hidden ""shared_dispatch_stub_130""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_130")"\n"
"\t"STUB_ASM_CODE("130")"\n"

".hidden ""shared_dispatch_stub_131""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_131")"\n"
"\t"STUB_ASM_CODE("131")"\n"

".hidden ""shared_dispatch_stub_132""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_132")"\n"
"\t"STUB_ASM_CODE("132")"\n"

".hidden ""shared_dispatch_stub_133""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_133")"\n"
"\t"STUB_ASM_CODE("133")"\n"

".hidden ""shared_dispatch_stub_134""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_134")"\n"
"\t"STUB_ASM_CODE("134")"\n"

".hidden ""shared_dispatch_stub_135""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_135")"\n"
"\t"STUB_ASM_CODE("135")"\n"

".hidden ""shared_dispatch_stub_136""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_136")"\n"
"\t"STUB_ASM_CODE("136")"\n"

".hidden ""shared_dispatch_stub_137""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_137")"\n"
"\t"STUB_ASM_CODE("137")"\n"

".hidden ""shared_dispatch_stub_138""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_138")"\n"
"\t"STUB_ASM_CODE("138")"\n"

".hidden ""shared_dispatch_stub_139""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_139")"\n"
"\t"STUB_ASM_CODE("139")"\n"

".hidden ""shared_dispatch_stub_140""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_140")"\n"
"\t"STUB_ASM_CODE("140")"\n"

".hidden ""shared_dispatch_stub_141""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_141")"\n"
"\t"STUB_ASM_CODE("141")"\n"

".hidden ""shared_dispatch_stub_142""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_142")"\n"
"\t"STUB_ASM_CODE("142")"\n"

".hidden ""shared_dispatch_stub_143""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_143")"\n"
"\t"STUB_ASM_CODE("143")"\n"

".hidden ""shared_dispatch_stub_144""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_144")"\n"
"\t"STUB_ASM_CODE("144")"\n"

".hidden ""shared_dispatch_stub_145""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_145")"\n"
"\t"STUB_ASM_CODE("145")"\n"

".hidden ""shared_dispatch_stub_146""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_146")"\n"
"\t"STUB_ASM_CODE("146")"\n"

".hidden ""shared_dispatch_stub_147""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_147")"\n"
"\t"STUB_ASM_CODE("147")"\n"

".hidden ""shared_dispatch_stub_148""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_148")"\n"
"\t"STUB_ASM_CODE("148")"\n"

".hidden ""shared_dispatch_stub_149""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_149")"\n"
"\t"STUB_ASM_CODE("149")"\n"

".hidden ""shared_dispatch_stub_150""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_150")"\n"
"\t"STUB_ASM_CODE("150")"\n"

".hidden ""shared_dispatch_stub_151""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_151")"\n"
"\t"STUB_ASM_CODE("151")"\n"

".hidden ""shared_dispatch_stub_152""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_152")"\n"
"\t"STUB_ASM_CODE("152")"\n"

".hidden ""shared_dispatch_stub_153""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_153")"\n"
"\t"STUB_ASM_CODE("153")"\n"

".hidden ""shared_dispatch_stub_154""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_154")"\n"
"\t"STUB_ASM_CODE("154")"\n"

".hidden ""shared_dispatch_stub_155""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_155")"\n"
"\t"STUB_ASM_CODE("155")"\n"

".hidden ""shared_dispatch_stub_156""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_156")"\n"
"\t"STUB_ASM_CODE("156")"\n"

".hidden ""shared_dispatch_stub_157""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_157")"\n"
"\t"STUB_ASM_CODE("157")"\n"

".hidden ""shared_dispatch_stub_158""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_158")"\n"
"\t"STUB_ASM_CODE("158")"\n"

".hidden ""shared_dispatch_stub_159""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_159")"\n"
"\t"STUB_ASM_CODE("159")"\n"

".hidden ""shared_dispatch_stub_160""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_160")"\n"
"\t"STUB_ASM_CODE("160")"\n"

".hidden ""shared_dispatch_stub_161""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_161")"\n"
"\t"STUB_ASM_CODE("161")"\n"

".hidden ""shared_dispatch_stub_162""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_162")"\n"
"\t"STUB_ASM_CODE("162")"\n"

".hidden ""shared_dispatch_stub_163""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_163")"\n"
"\t"STUB_ASM_CODE("163")"\n"

".hidden ""shared_dispatch_stub_164""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_164")"\n"
"\t"STUB_ASM_CODE("164")"\n"

".hidden ""shared_dispatch_stub_165""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_165")"\n"
"\t"STUB_ASM_CODE("165")"\n"

".hidden ""shared_dispatch_stub_166""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_166")"\n"
"\t"STUB_ASM_CODE("166")"\n"

".hidden ""shared_dispatch_stub_167""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_167")"\n"
"\t"STUB_ASM_CODE("167")"\n"

".hidden ""shared_dispatch_stub_168""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_168")"\n"
"\t"STUB_ASM_CODE("168")"\n"

".hidden ""shared_dispatch_stub_169""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_169")"\n"
"\t"STUB_ASM_CODE("169")"\n"

".hidden ""shared_dispatch_stub_170""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_170")"\n"
"\t"STUB_ASM_CODE("170")"\n"

".hidden ""shared_dispatch_stub_171""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_171")"\n"
"\t"STUB_ASM_CODE("171")"\n"

".hidden ""shared_dispatch_stub_172""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_172")"\n"
"\t"STUB_ASM_CODE("172")"\n"

".hidden ""shared_dispatch_stub_173""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_173")"\n"
"\t"STUB_ASM_CODE("173")"\n"

".hidden ""shared_dispatch_stub_174""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_174")"\n"
"\t"STUB_ASM_CODE("174")"\n"

".hidden ""shared_dispatch_stub_175""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_175")"\n"
"\t"STUB_ASM_CODE("175")"\n"

".hidden ""shared_dispatch_stub_176""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_176")"\n"
"\t"STUB_ASM_CODE("176")"\n"

".hidden ""shared_dispatch_stub_177""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_177")"\n"
"\t"STUB_ASM_CODE("177")"\n"

".hidden ""shared_dispatch_stub_178""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_178")"\n"
"\t"STUB_ASM_CODE("178")"\n"

".hidden ""shared_dispatch_stub_179""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_179")"\n"
"\t"STUB_ASM_CODE("179")"\n"

".hidden ""shared_dispatch_stub_180""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_180")"\n"
"\t"STUB_ASM_CODE("180")"\n"

".hidden ""shared_dispatch_stub_181""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_181")"\n"
"\t"STUB_ASM_CODE("181")"\n"

".hidden ""shared_dispatch_stub_182""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_182")"\n"
"\t"STUB_ASM_CODE("182")"\n"

".hidden ""shared_dispatch_stub_183""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_183")"\n"
"\t"STUB_ASM_CODE("183")"\n"

".hidden ""shared_dispatch_stub_184""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_184")"\n"
"\t"STUB_ASM_CODE("184")"\n"

".hidden ""shared_dispatch_stub_185""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_185")"\n"
"\t"STUB_ASM_CODE("185")"\n"

".hidden ""shared_dispatch_stub_186""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_186")"\n"
"\t"STUB_ASM_CODE("186")"\n"

".hidden ""shared_dispatch_stub_187""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_187")"\n"
"\t"STUB_ASM_CODE("187")"\n"

".hidden ""shared_dispatch_stub_188""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_188")"\n"
"\t"STUB_ASM_CODE("188")"\n"

".hidden ""shared_dispatch_stub_189""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_189")"\n"
"\t"STUB_ASM_CODE("189")"\n"

".hidden ""shared_dispatch_stub_190""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_190")"\n"
"\t"STUB_ASM_CODE("190")"\n"

".hidden ""shared_dispatch_stub_191""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_191")"\n"
"\t"STUB_ASM_CODE("191")"\n"

".hidden ""shared_dispatch_stub_192""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_192")"\n"
"\t"STUB_ASM_CODE("192")"\n"

".hidden ""shared_dispatch_stub_193""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_193")"\n"
"\t"STUB_ASM_CODE("193")"\n"

".hidden ""shared_dispatch_stub_194""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_194")"\n"
"\t"STUB_ASM_CODE("194")"\n"

".hidden ""shared_dispatch_stub_195""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_195")"\n"
"\t"STUB_ASM_CODE("195")"\n"

".hidden ""shared_dispatch_stub_196""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_196")"\n"
"\t"STUB_ASM_CODE("196")"\n"

".hidden ""shared_dispatch_stub_197""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_197")"\n"
"\t"STUB_ASM_CODE("197")"\n"

".hidden ""shared_dispatch_stub_198""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_198")"\n"
"\t"STUB_ASM_CODE("198")"\n"

".hidden ""shared_dispatch_stub_199""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_199")"\n"
"\t"STUB_ASM_CODE("199")"\n"

".hidden ""shared_dispatch_stub_200""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_200")"\n"
"\t"STUB_ASM_CODE("200")"\n"

".hidden ""shared_dispatch_stub_201""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_201")"\n"
"\t"STUB_ASM_CODE("201")"\n"

".hidden ""shared_dispatch_stub_202""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_202")"\n"
"\t"STUB_ASM_CODE("202")"\n"

".hidden ""shared_dispatch_stub_203""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_203")"\n"
"\t"STUB_ASM_CODE("203")"\n"

".hidden ""shared_dispatch_stub_204""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_204")"\n"
"\t"STUB_ASM_CODE("204")"\n"

".hidden ""shared_dispatch_stub_205""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_205")"\n"
"\t"STUB_ASM_CODE("205")"\n"

".hidden ""shared_dispatch_stub_206""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_206")"\n"
"\t"STUB_ASM_CODE("206")"\n"

".hidden ""shared_dispatch_stub_207""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_207")"\n"
"\t"STUB_ASM_CODE("207")"\n"

".hidden ""shared_dispatch_stub_208""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_208")"\n"
"\t"STUB_ASM_CODE("208")"\n"

".hidden ""shared_dispatch_stub_209""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_209")"\n"
"\t"STUB_ASM_CODE("209")"\n"

".hidden ""shared_dispatch_stub_210""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_210")"\n"
"\t"STUB_ASM_CODE("210")"\n"

".hidden ""shared_dispatch_stub_211""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_211")"\n"
"\t"STUB_ASM_CODE("211")"\n"

".hidden ""shared_dispatch_stub_212""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_212")"\n"
"\t"STUB_ASM_CODE("212")"\n"

".hidden ""shared_dispatch_stub_213""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_213")"\n"
"\t"STUB_ASM_CODE("213")"\n"

".hidden ""shared_dispatch_stub_214""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_214")"\n"
"\t"STUB_ASM_CODE("214")"\n"

".hidden ""shared_dispatch_stub_215""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_215")"\n"
"\t"STUB_ASM_CODE("215")"\n"

".hidden ""shared_dispatch_stub_216""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_216")"\n"
"\t"STUB_ASM_CODE("216")"\n"

".hidden ""shared_dispatch_stub_217""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_217")"\n"
"\t"STUB_ASM_CODE("217")"\n"

".hidden ""shared_dispatch_stub_218""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_218")"\n"
"\t"STUB_ASM_CODE("218")"\n"

".hidden ""shared_dispatch_stub_219""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_219")"\n"
"\t"STUB_ASM_CODE("219")"\n"

".hidden ""shared_dispatch_stub_220""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_220")"\n"
"\t"STUB_ASM_CODE("220")"\n"

".hidden ""shared_dispatch_stub_221""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_221")"\n"
"\t"STUB_ASM_CODE("221")"\n"

".hidden ""shared_dispatch_stub_222""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_222")"\n"
"\t"STUB_ASM_CODE("222")"\n"

".hidden ""shared_dispatch_stub_223""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_223")"\n"
"\t"STUB_ASM_CODE("223")"\n"

".hidden ""shared_dispatch_stub_224""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_224")"\n"
"\t"STUB_ASM_CODE("224")"\n"

".hidden ""shared_dispatch_stub_225""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_225")"\n"
"\t"STUB_ASM_CODE("225")"\n"

".hidden ""shared_dispatch_stub_226""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_226")"\n"
"\t"STUB_ASM_CODE("226")"\n"

".hidden ""shared_dispatch_stub_227""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_227")"\n"
"\t"STUB_ASM_CODE("227")"\n"

".hidden ""shared_dispatch_stub_228""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_228")"\n"
"\t"STUB_ASM_CODE("228")"\n"

".hidden ""shared_dispatch_stub_229""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_229")"\n"
"\t"STUB_ASM_CODE("229")"\n"

".hidden ""shared_dispatch_stub_230""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_230")"\n"
"\t"STUB_ASM_CODE("230")"\n"

".hidden ""shared_dispatch_stub_231""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_231")"\n"
"\t"STUB_ASM_CODE("231")"\n"

".hidden ""shared_dispatch_stub_232""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_232")"\n"
"\t"STUB_ASM_CODE("232")"\n"

".hidden ""shared_dispatch_stub_233""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_233")"\n"
"\t"STUB_ASM_CODE("233")"\n"

".hidden ""shared_dispatch_stub_234""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_234")"\n"
"\t"STUB_ASM_CODE("234")"\n"

".hidden ""shared_dispatch_stub_235""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_235")"\n"
"\t"STUB_ASM_CODE("235")"\n"

".hidden ""shared_dispatch_stub_236""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_236")"\n"
"\t"STUB_ASM_CODE("236")"\n"

".hidden ""shared_dispatch_stub_237""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_237")"\n"
"\t"STUB_ASM_CODE("237")"\n"

".hidden ""shared_dispatch_stub_238""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_238")"\n"
"\t"STUB_ASM_CODE("238")"\n"

".hidden ""shared_dispatch_stub_239""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_239")"\n"
"\t"STUB_ASM_CODE("239")"\n"

".hidden ""shared_dispatch_stub_240""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_240")"\n"
"\t"STUB_ASM_CODE("240")"\n"

".hidden ""shared_dispatch_stub_241""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_241")"\n"
"\t"STUB_ASM_CODE("241")"\n"

".hidden ""shared_dispatch_stub_242""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_242")"\n"
"\t"STUB_ASM_CODE("242")"\n"

".hidden ""shared_dispatch_stub_243""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_243")"\n"
"\t"STUB_ASM_CODE("243")"\n"

".hidden ""shared_dispatch_stub_244""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_244")"\n"
"\t"STUB_ASM_CODE("244")"\n"

".hidden ""shared_dispatch_stub_245""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_245")"\n"
"\t"STUB_ASM_CODE("245")"\n"

".hidden ""shared_dispatch_stub_246""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_246")"\n"
"\t"STUB_ASM_CODE("246")"\n"

".hidden ""shared_dispatch_stub_247""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_247")"\n"
"\t"STUB_ASM_CODE("247")"\n"

".hidden ""shared_dispatch_stub_248""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_248")"\n"
"\t"STUB_ASM_CODE("248")"\n"

".hidden ""shared_dispatch_stub_249""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_249")"\n"
"\t"STUB_ASM_CODE("249")"\n"

".hidden ""shared_dispatch_stub_250""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_250")"\n"
"\t"STUB_ASM_CODE("250")"\n"

".hidden ""shared_dispatch_stub_251""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_251")"\n"
"\t"STUB_ASM_CODE("251")"\n"

".hidden ""shared_dispatch_stub_252""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_252")"\n"
"\t"STUB_ASM_CODE("252")"\n"

".hidden ""shared_dispatch_stub_253""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_253")"\n"
"\t"STUB_ASM_CODE("253")"\n"

".hidden ""shared_dispatch_stub_254""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_254")"\n"
"\t"STUB_ASM_CODE("254")"\n"

".hidden ""shared_dispatch_stub_255""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_255")"\n"
"\t"STUB_ASM_CODE("255")"\n"

".hidden ""shared_dispatch_stub_256""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_256")"\n"
"\t"STUB_ASM_CODE("256")"\n"

".hidden ""shared_dispatch_stub_257""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_257")"\n"
"\t"STUB_ASM_CODE("257")"\n"

".hidden ""shared_dispatch_stub_258""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_258")"\n"
"\t"STUB_ASM_CODE("258")"\n"

".hidden ""shared_dispatch_stub_259""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_259")"\n"
"\t"STUB_ASM_CODE("259")"\n"

".hidden ""shared_dispatch_stub_260""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_260")"\n"
"\t"STUB_ASM_CODE("260")"\n"

".hidden ""shared_dispatch_stub_261""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_261")"\n"
"\t"STUB_ASM_CODE("261")"\n"

".hidden ""shared_dispatch_stub_262""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_262")"\n"
"\t"STUB_ASM_CODE("262")"\n"

".hidden ""shared_dispatch_stub_263""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_263")"\n"
"\t"STUB_ASM_CODE("263")"\n"

".hidden ""shared_dispatch_stub_264""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_264")"\n"
"\t"STUB_ASM_CODE("264")"\n"

".hidden ""shared_dispatch_stub_265""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_265")"\n"
"\t"STUB_ASM_CODE("265")"\n"

".hidden ""shared_dispatch_stub_266""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_266")"\n"
"\t"STUB_ASM_CODE("266")"\n"

".hidden ""shared_dispatch_stub_267""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_267")"\n"
"\t"STUB_ASM_CODE("267")"\n"

".hidden ""shared_dispatch_stub_268""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_268")"\n"
"\t"STUB_ASM_CODE("268")"\n"

".hidden ""shared_dispatch_stub_269""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_269")"\n"
"\t"STUB_ASM_CODE("269")"\n"

".hidden ""shared_dispatch_stub_270""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_270")"\n"
"\t"STUB_ASM_CODE("270")"\n"

".hidden ""shared_dispatch_stub_271""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_271")"\n"
"\t"STUB_ASM_CODE("271")"\n"

".hidden ""shared_dispatch_stub_272""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_272")"\n"
"\t"STUB_ASM_CODE("272")"\n"

".hidden ""shared_dispatch_stub_273""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_273")"\n"
"\t"STUB_ASM_CODE("273")"\n"

".hidden ""shared_dispatch_stub_274""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_274")"\n"
"\t"STUB_ASM_CODE("274")"\n"

".hidden ""shared_dispatch_stub_275""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_275")"\n"
"\t"STUB_ASM_CODE("275")"\n"

".hidden ""shared_dispatch_stub_276""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_276")"\n"
"\t"STUB_ASM_CODE("276")"\n"

".hidden ""shared_dispatch_stub_277""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_277")"\n"
"\t"STUB_ASM_CODE("277")"\n"

".hidden ""shared_dispatch_stub_278""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_278")"\n"
"\t"STUB_ASM_CODE("278")"\n"

".hidden ""shared_dispatch_stub_279""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_279")"\n"
"\t"STUB_ASM_CODE("279")"\n"

".hidden ""shared_dispatch_stub_280""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_280")"\n"
"\t"STUB_ASM_CODE("280")"\n"

".hidden ""shared_dispatch_stub_281""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_281")"\n"
"\t"STUB_ASM_CODE("281")"\n"

".hidden ""shared_dispatch_stub_282""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_282")"\n"
"\t"STUB_ASM_CODE("282")"\n"

".hidden ""shared_dispatch_stub_283""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_283")"\n"
"\t"STUB_ASM_CODE("283")"\n"

".hidden ""shared_dispatch_stub_284""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_284")"\n"
"\t"STUB_ASM_CODE("284")"\n"

".hidden ""shared_dispatch_stub_285""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_285")"\n"
"\t"STUB_ASM_CODE("285")"\n"

".hidden ""shared_dispatch_stub_286""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_286")"\n"
"\t"STUB_ASM_CODE("286")"\n"

".hidden ""shared_dispatch_stub_287""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_287")"\n"
"\t"STUB_ASM_CODE("287")"\n"

".hidden ""shared_dispatch_stub_288""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_288")"\n"
"\t"STUB_ASM_CODE("288")"\n"

".hidden ""shared_dispatch_stub_289""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_289")"\n"
"\t"STUB_ASM_CODE("289")"\n"

".hidden ""shared_dispatch_stub_290""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_290")"\n"
"\t"STUB_ASM_CODE("290")"\n"

".hidden ""shared_dispatch_stub_291""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_291")"\n"
"\t"STUB_ASM_CODE("291")"\n"

".hidden ""shared_dispatch_stub_292""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_292")"\n"
"\t"STUB_ASM_CODE("292")"\n"

".hidden ""shared_dispatch_stub_293""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_293")"\n"
"\t"STUB_ASM_CODE("293")"\n"

".hidden ""shared_dispatch_stub_294""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_294")"\n"
"\t"STUB_ASM_CODE("294")"\n"

".hidden ""shared_dispatch_stub_295""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_295")"\n"
"\t"STUB_ASM_CODE("295")"\n"

".hidden ""shared_dispatch_stub_296""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_296")"\n"
"\t"STUB_ASM_CODE("296")"\n"

".hidden ""shared_dispatch_stub_297""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_297")"\n"
"\t"STUB_ASM_CODE("297")"\n"

".hidden ""shared_dispatch_stub_298""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_298")"\n"
"\t"STUB_ASM_CODE("298")"\n"

".hidden ""shared_dispatch_stub_299""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_299")"\n"
"\t"STUB_ASM_CODE("299")"\n"

".hidden ""shared_dispatch_stub_300""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_300")"\n"
"\t"STUB_ASM_CODE("300")"\n"

".hidden ""shared_dispatch_stub_301""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_301")"\n"
"\t"STUB_ASM_CODE("301")"\n"

".hidden ""shared_dispatch_stub_302""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_302")"\n"
"\t"STUB_ASM_CODE("302")"\n"

".hidden ""shared_dispatch_stub_303""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_303")"\n"
"\t"STUB_ASM_CODE("303")"\n"

".hidden ""shared_dispatch_stub_304""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_304")"\n"
"\t"STUB_ASM_CODE("304")"\n"

".hidden ""shared_dispatch_stub_305""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_305")"\n"
"\t"STUB_ASM_CODE("305")"\n"

".hidden ""shared_dispatch_stub_306""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_306")"\n"
"\t"STUB_ASM_CODE("306")"\n"

".hidden ""shared_dispatch_stub_307""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_307")"\n"
"\t"STUB_ASM_CODE("307")"\n"

".hidden ""shared_dispatch_stub_308""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_308")"\n"
"\t"STUB_ASM_CODE("308")"\n"

".hidden ""shared_dispatch_stub_309""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_309")"\n"
"\t"STUB_ASM_CODE("309")"\n"

".hidden ""shared_dispatch_stub_310""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_310")"\n"
"\t"STUB_ASM_CODE("310")"\n"

".hidden ""shared_dispatch_stub_311""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_311")"\n"
"\t"STUB_ASM_CODE("311")"\n"

".hidden ""shared_dispatch_stub_312""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_312")"\n"
"\t"STUB_ASM_CODE("312")"\n"

".hidden ""shared_dispatch_stub_313""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_313")"\n"
"\t"STUB_ASM_CODE("313")"\n"

".hidden ""shared_dispatch_stub_314""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_314")"\n"
"\t"STUB_ASM_CODE("314")"\n"

".hidden ""shared_dispatch_stub_315""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_315")"\n"
"\t"STUB_ASM_CODE("315")"\n"

".hidden ""shared_dispatch_stub_316""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_316")"\n"
"\t"STUB_ASM_CODE("316")"\n"

".hidden ""shared_dispatch_stub_317""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_317")"\n"
"\t"STUB_ASM_CODE("317")"\n"

".hidden ""shared_dispatch_stub_318""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_318")"\n"
"\t"STUB_ASM_CODE("318")"\n"

".hidden ""shared_dispatch_stub_319""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_319")"\n"
"\t"STUB_ASM_CODE("319")"\n"

".hidden ""shared_dispatch_stub_320""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_320")"\n"
"\t"STUB_ASM_CODE("320")"\n"

".hidden ""shared_dispatch_stub_321""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_321")"\n"
"\t"STUB_ASM_CODE("321")"\n"

".hidden ""shared_dispatch_stub_322""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_322")"\n"
"\t"STUB_ASM_CODE("322")"\n"

".hidden ""shared_dispatch_stub_323""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_323")"\n"
"\t"STUB_ASM_CODE("323")"\n"

".hidden ""shared_dispatch_stub_324""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_324")"\n"
"\t"STUB_ASM_CODE("324")"\n"

".hidden ""shared_dispatch_stub_325""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_325")"\n"
"\t"STUB_ASM_CODE("325")"\n"

".hidden ""shared_dispatch_stub_326""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_326")"\n"
"\t"STUB_ASM_CODE("326")"\n"

".hidden ""shared_dispatch_stub_327""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_327")"\n"
"\t"STUB_ASM_CODE("327")"\n"

".hidden ""shared_dispatch_stub_328""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_328")"\n"
"\t"STUB_ASM_CODE("328")"\n"

".hidden ""shared_dispatch_stub_329""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_329")"\n"
"\t"STUB_ASM_CODE("329")"\n"

".hidden ""shared_dispatch_stub_330""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_330")"\n"
"\t"STUB_ASM_CODE("330")"\n"

".hidden ""shared_dispatch_stub_331""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_331")"\n"
"\t"STUB_ASM_CODE("331")"\n"

".hidden ""shared_dispatch_stub_332""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_332")"\n"
"\t"STUB_ASM_CODE("332")"\n"

".hidden ""shared_dispatch_stub_333""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_333")"\n"
"\t"STUB_ASM_CODE("333")"\n"

".hidden ""shared_dispatch_stub_334""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_334")"\n"
"\t"STUB_ASM_CODE("334")"\n"

".hidden ""shared_dispatch_stub_335""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_335")"\n"
"\t"STUB_ASM_CODE("335")"\n"

".hidden ""shared_dispatch_stub_336""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_336")"\n"
"\t"STUB_ASM_CODE("336")"\n"

".hidden ""shared_dispatch_stub_337""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_337")"\n"
"\t"STUB_ASM_CODE("337")"\n"

".hidden ""shared_dispatch_stub_338""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_338")"\n"
"\t"STUB_ASM_CODE("338")"\n"

".hidden ""shared_dispatch_stub_339""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_339")"\n"
"\t"STUB_ASM_CODE("339")"\n"

".hidden ""shared_dispatch_stub_340""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_340")"\n"
"\t"STUB_ASM_CODE("340")"\n"

".hidden ""shared_dispatch_stub_341""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_341")"\n"
"\t"STUB_ASM_CODE("341")"\n"

".hidden ""shared_dispatch_stub_342""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_342")"\n"
"\t"STUB_ASM_CODE("342")"\n"

".hidden ""shared_dispatch_stub_343""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_343")"\n"
"\t"STUB_ASM_CODE("343")"\n"

".hidden ""shared_dispatch_stub_344""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_344")"\n"
"\t"STUB_ASM_CODE("344")"\n"

".hidden ""shared_dispatch_stub_345""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_345")"\n"
"\t"STUB_ASM_CODE("345")"\n"

".hidden ""shared_dispatch_stub_346""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_346")"\n"
"\t"STUB_ASM_CODE("346")"\n"

".hidden ""shared_dispatch_stub_347""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_347")"\n"
"\t"STUB_ASM_CODE("347")"\n"

".hidden ""shared_dispatch_stub_348""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_348")"\n"
"\t"STUB_ASM_CODE("348")"\n"

".hidden ""shared_dispatch_stub_349""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_349")"\n"
"\t"STUB_ASM_CODE("349")"\n"

".hidden ""shared_dispatch_stub_350""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_350")"\n"
"\t"STUB_ASM_CODE("350")"\n"

".hidden ""shared_dispatch_stub_351""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_351")"\n"
"\t"STUB_ASM_CODE("351")"\n"

".hidden ""shared_dispatch_stub_352""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_352")"\n"
"\t"STUB_ASM_CODE("352")"\n"

".hidden ""shared_dispatch_stub_353""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_353")"\n"
"\t"STUB_ASM_CODE("353")"\n"

".hidden ""shared_dispatch_stub_354""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_354")"\n"
"\t"STUB_ASM_CODE("354")"\n"

".hidden ""shared_dispatch_stub_355""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_355")"\n"
"\t"STUB_ASM_CODE("355")"\n"

".hidden ""shared_dispatch_stub_356""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_356")"\n"
"\t"STUB_ASM_CODE("356")"\n"

".hidden ""shared_dispatch_stub_357""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_357")"\n"
"\t"STUB_ASM_CODE("357")"\n"

".hidden ""shared_dispatch_stub_358""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_358")"\n"
"\t"STUB_ASM_CODE("358")"\n"

".hidden ""shared_dispatch_stub_359""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_359")"\n"
"\t"STUB_ASM_CODE("359")"\n"

".hidden ""shared_dispatch_stub_360""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_360")"\n"
"\t"STUB_ASM_CODE("360")"\n"

".hidden ""shared_dispatch_stub_361""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_361")"\n"
"\t"STUB_ASM_CODE("361")"\n"

".hidden ""shared_dispatch_stub_362""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_362")"\n"
"\t"STUB_ASM_CODE("362")"\n"

".hidden ""shared_dispatch_stub_363""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_363")"\n"
"\t"STUB_ASM_CODE("363")"\n"

".hidden ""shared_dispatch_stub_364""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_364")"\n"
"\t"STUB_ASM_CODE("364")"\n"

".hidden ""shared_dispatch_stub_365""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_365")"\n"
"\t"STUB_ASM_CODE("365")"\n"

".hidden ""shared_dispatch_stub_366""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_366")"\n"
"\t"STUB_ASM_CODE("366")"\n"

".hidden ""shared_dispatch_stub_367""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_367")"\n"
"\t"STUB_ASM_CODE("367")"\n"

".hidden ""shared_dispatch_stub_368""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_368")"\n"
"\t"STUB_ASM_CODE("368")"\n"

".hidden ""shared_dispatch_stub_369""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_369")"\n"
"\t"STUB_ASM_CODE("369")"\n"

".hidden ""shared_dispatch_stub_370""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_370")"\n"
"\t"STUB_ASM_CODE("370")"\n"

".hidden ""shared_dispatch_stub_371""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_371")"\n"
"\t"STUB_ASM_CODE("371")"\n"

".hidden ""shared_dispatch_stub_372""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_372")"\n"
"\t"STUB_ASM_CODE("372")"\n"

".hidden ""shared_dispatch_stub_373""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_373")"\n"
"\t"STUB_ASM_CODE("373")"\n"

".hidden ""shared_dispatch_stub_374""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_374")"\n"
"\t"STUB_ASM_CODE("374")"\n"

".hidden ""shared_dispatch_stub_375""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_375")"\n"
"\t"STUB_ASM_CODE("375")"\n"

".hidden ""shared_dispatch_stub_376""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_376")"\n"
"\t"STUB_ASM_CODE("376")"\n"

".hidden ""shared_dispatch_stub_377""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_377")"\n"
"\t"STUB_ASM_CODE("377")"\n"

".hidden ""shared_dispatch_stub_378""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_378")"\n"
"\t"STUB_ASM_CODE("378")"\n"

".hidden ""shared_dispatch_stub_379""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_379")"\n"
"\t"STUB_ASM_CODE("379")"\n"

".hidden ""shared_dispatch_stub_380""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_380")"\n"
"\t"STUB_ASM_CODE("380")"\n"

".hidden ""shared_dispatch_stub_381""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_381")"\n"
"\t"STUB_ASM_CODE("381")"\n"

".hidden ""shared_dispatch_stub_382""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_382")"\n"
"\t"STUB_ASM_CODE("382")"\n"

".hidden ""shared_dispatch_stub_383""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_383")"\n"
"\t"STUB_ASM_CODE("383")"\n"

".hidden ""shared_dispatch_stub_384""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_384")"\n"
"\t"STUB_ASM_CODE("384")"\n"

".hidden ""shared_dispatch_stub_385""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_385")"\n"
"\t"STUB_ASM_CODE("385")"\n"

".hidden ""shared_dispatch_stub_386""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_386")"\n"
"\t"STUB_ASM_CODE("386")"\n"

".hidden ""shared_dispatch_stub_387""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_387")"\n"
"\t"STUB_ASM_CODE("387")"\n"

".hidden ""shared_dispatch_stub_388""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_388")"\n"
"\t"STUB_ASM_CODE("388")"\n"

".hidden ""shared_dispatch_stub_389""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_389")"\n"
"\t"STUB_ASM_CODE("389")"\n"

".hidden ""shared_dispatch_stub_390""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_390")"\n"
"\t"STUB_ASM_CODE("390")"\n"

".hidden ""shared_dispatch_stub_391""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_391")"\n"
"\t"STUB_ASM_CODE("391")"\n"

".hidden ""shared_dispatch_stub_392""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_392")"\n"
"\t"STUB_ASM_CODE("392")"\n"

".hidden ""shared_dispatch_stub_393""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_393")"\n"
"\t"STUB_ASM_CODE("393")"\n"

".hidden ""shared_dispatch_stub_394""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_394")"\n"
"\t"STUB_ASM_CODE("394")"\n"

".hidden ""shared_dispatch_stub_395""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_395")"\n"
"\t"STUB_ASM_CODE("395")"\n"

".hidden ""shared_dispatch_stub_396""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_396")"\n"
"\t"STUB_ASM_CODE("396")"\n"

".hidden ""shared_dispatch_stub_397""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_397")"\n"
"\t"STUB_ASM_CODE("397")"\n"

".hidden ""shared_dispatch_stub_398""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_398")"\n"
"\t"STUB_ASM_CODE("398")"\n"

".hidden ""shared_dispatch_stub_399""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_399")"\n"
"\t"STUB_ASM_CODE("399")"\n"

".hidden ""shared_dispatch_stub_400""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_400")"\n"
"\t"STUB_ASM_CODE("400")"\n"

".hidden ""shared_dispatch_stub_401""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_401")"\n"
"\t"STUB_ASM_CODE("401")"\n"

".hidden ""shared_dispatch_stub_402""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_402")"\n"
"\t"STUB_ASM_CODE("402")"\n"

".hidden ""shared_dispatch_stub_403""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_403")"\n"
"\t"STUB_ASM_CODE("403")"\n"

".hidden ""shared_dispatch_stub_404""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_404")"\n"
"\t"STUB_ASM_CODE("404")"\n"

".hidden ""shared_dispatch_stub_405""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_405")"\n"
"\t"STUB_ASM_CODE("405")"\n"

".hidden ""shared_dispatch_stub_406""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_406")"\n"
"\t"STUB_ASM_CODE("406")"\n"

".hidden ""shared_dispatch_stub_407""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_407")"\n"
"\t"STUB_ASM_CODE("407")"\n"

".hidden ""shared_dispatch_stub_408""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_408")"\n"
"\t"STUB_ASM_CODE("408")"\n"

".hidden ""shared_dispatch_stub_409""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_409")"\n"
"\t"STUB_ASM_CODE("409")"\n"

".hidden ""shared_dispatch_stub_410""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_410")"\n"
"\t"STUB_ASM_CODE("410")"\n"

".hidden ""shared_dispatch_stub_411""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_411")"\n"
"\t"STUB_ASM_CODE("411")"\n"

".hidden ""shared_dispatch_stub_412""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_412")"\n"
"\t"STUB_ASM_CODE("412")"\n"

".hidden ""shared_dispatch_stub_413""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_413")"\n"
"\t"STUB_ASM_CODE("413")"\n"

".hidden ""shared_dispatch_stub_414""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_414")"\n"
"\t"STUB_ASM_CODE("414")"\n"

".hidden ""shared_dispatch_stub_415""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_415")"\n"
"\t"STUB_ASM_CODE("415")"\n"

".hidden ""shared_dispatch_stub_416""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_416")"\n"
"\t"STUB_ASM_CODE("416")"\n"

".hidden ""shared_dispatch_stub_417""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_417")"\n"
"\t"STUB_ASM_CODE("417")"\n"

".hidden ""shared_dispatch_stub_418""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_418")"\n"
"\t"STUB_ASM_CODE("418")"\n"

".hidden ""shared_dispatch_stub_419""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_419")"\n"
"\t"STUB_ASM_CODE("419")"\n"

".hidden ""shared_dispatch_stub_420""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_420")"\n"
"\t"STUB_ASM_CODE("420")"\n"

".hidden ""shared_dispatch_stub_421""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_421")"\n"
"\t"STUB_ASM_CODE("421")"\n"

".hidden ""shared_dispatch_stub_422""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_422")"\n"
"\t"STUB_ASM_CODE("422")"\n"

".hidden ""shared_dispatch_stub_423""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_423")"\n"
"\t"STUB_ASM_CODE("423")"\n"

".hidden ""shared_dispatch_stub_424""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_424")"\n"
"\t"STUB_ASM_CODE("424")"\n"

".hidden ""shared_dispatch_stub_425""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_425")"\n"
"\t"STUB_ASM_CODE("425")"\n"

".hidden ""shared_dispatch_stub_426""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_426")"\n"
"\t"STUB_ASM_CODE("426")"\n"

".hidden ""shared_dispatch_stub_427""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_427")"\n"
"\t"STUB_ASM_CODE("427")"\n"

".hidden ""shared_dispatch_stub_428""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_428")"\n"
"\t"STUB_ASM_CODE("428")"\n"

".hidden ""shared_dispatch_stub_429""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_429")"\n"
"\t"STUB_ASM_CODE("429")"\n"

".hidden ""shared_dispatch_stub_430""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_430")"\n"
"\t"STUB_ASM_CODE("430")"\n"

".hidden ""shared_dispatch_stub_431""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_431")"\n"
"\t"STUB_ASM_CODE("431")"\n"

".hidden ""shared_dispatch_stub_432""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_432")"\n"
"\t"STUB_ASM_CODE("432")"\n"

".hidden ""shared_dispatch_stub_433""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_433")"\n"
"\t"STUB_ASM_CODE("433")"\n"

".hidden ""shared_dispatch_stub_434""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_434")"\n"
"\t"STUB_ASM_CODE("434")"\n"

".hidden ""shared_dispatch_stub_435""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_435")"\n"
"\t"STUB_ASM_CODE("435")"\n"

".hidden ""shared_dispatch_stub_436""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_436")"\n"
"\t"STUB_ASM_CODE("436")"\n"

".hidden ""shared_dispatch_stub_437""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_437")"\n"
"\t"STUB_ASM_CODE("437")"\n"

".hidden ""shared_dispatch_stub_438""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_438")"\n"
"\t"STUB_ASM_CODE("438")"\n"

".hidden ""shared_dispatch_stub_439""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_439")"\n"
"\t"STUB_ASM_CODE("439")"\n"

".hidden ""shared_dispatch_stub_440""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_440")"\n"
"\t"STUB_ASM_CODE("440")"\n"

".hidden ""shared_dispatch_stub_441""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_441")"\n"
"\t"STUB_ASM_CODE("441")"\n"

".hidden ""shared_dispatch_stub_442""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_442")"\n"
"\t"STUB_ASM_CODE("442")"\n"

".hidden ""shared_dispatch_stub_443""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_443")"\n"
"\t"STUB_ASM_CODE("443")"\n"

".hidden ""shared_dispatch_stub_444""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_444")"\n"
"\t"STUB_ASM_CODE("444")"\n"

".hidden ""shared_dispatch_stub_445""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_445")"\n"
"\t"STUB_ASM_CODE("445")"\n"

".hidden ""shared_dispatch_stub_446""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_446")"\n"
"\t"STUB_ASM_CODE("446")"\n"

".hidden ""shared_dispatch_stub_447""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_447")"\n"
"\t"STUB_ASM_CODE("447")"\n"

".hidden ""shared_dispatch_stub_448""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_448")"\n"
"\t"STUB_ASM_CODE("448")"\n"

".hidden ""shared_dispatch_stub_449""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_449")"\n"
"\t"STUB_ASM_CODE("449")"\n"

".hidden ""shared_dispatch_stub_450""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_450")"\n"
"\t"STUB_ASM_CODE("450")"\n"

".hidden ""shared_dispatch_stub_451""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_451")"\n"
"\t"STUB_ASM_CODE("451")"\n"

".hidden ""shared_dispatch_stub_452""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_452")"\n"
"\t"STUB_ASM_CODE("452")"\n"

".hidden ""shared_dispatch_stub_453""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_453")"\n"
"\t"STUB_ASM_CODE("453")"\n"

".hidden ""shared_dispatch_stub_454""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_454")"\n"
"\t"STUB_ASM_CODE("454")"\n"

".hidden ""shared_dispatch_stub_455""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_455")"\n"
"\t"STUB_ASM_CODE("455")"\n"

".hidden ""shared_dispatch_stub_456""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_456")"\n"
"\t"STUB_ASM_CODE("456")"\n"

".hidden ""shared_dispatch_stub_457""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_457")"\n"
"\t"STUB_ASM_CODE("457")"\n"

".hidden ""shared_dispatch_stub_458""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_458")"\n"
"\t"STUB_ASM_CODE("458")"\n"

".hidden ""shared_dispatch_stub_459""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_459")"\n"
"\t"STUB_ASM_CODE("459")"\n"

".hidden ""shared_dispatch_stub_460""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_460")"\n"
"\t"STUB_ASM_CODE("460")"\n"

".hidden ""shared_dispatch_stub_461""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_461")"\n"
"\t"STUB_ASM_CODE("461")"\n"

".hidden ""shared_dispatch_stub_462""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_462")"\n"
"\t"STUB_ASM_CODE("462")"\n"

".hidden ""shared_dispatch_stub_463""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_463")"\n"
"\t"STUB_ASM_CODE("463")"\n"

".hidden ""shared_dispatch_stub_464""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_464")"\n"
"\t"STUB_ASM_CODE("464")"\n"

".hidden ""shared_dispatch_stub_465""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_465")"\n"
"\t"STUB_ASM_CODE("465")"\n"

".hidden ""shared_dispatch_stub_466""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_466")"\n"
"\t"STUB_ASM_CODE("466")"\n"

".hidden ""shared_dispatch_stub_467""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_467")"\n"
"\t"STUB_ASM_CODE("467")"\n"

".hidden ""shared_dispatch_stub_468""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_468")"\n"
"\t"STUB_ASM_CODE("468")"\n"

".hidden ""shared_dispatch_stub_469""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_469")"\n"
"\t"STUB_ASM_CODE("469")"\n"

".hidden ""shared_dispatch_stub_470""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_470")"\n"
"\t"STUB_ASM_CODE("470")"\n"

".hidden ""shared_dispatch_stub_471""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_471")"\n"
"\t"STUB_ASM_CODE("471")"\n"

".hidden ""shared_dispatch_stub_472""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_472")"\n"
"\t"STUB_ASM_CODE("472")"\n"

".hidden ""shared_dispatch_stub_473""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_473")"\n"
"\t"STUB_ASM_CODE("473")"\n"

".hidden ""shared_dispatch_stub_474""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_474")"\n"
"\t"STUB_ASM_CODE("474")"\n"

".hidden ""shared_dispatch_stub_475""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_475")"\n"
"\t"STUB_ASM_CODE("475")"\n"

".hidden ""shared_dispatch_stub_476""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_476")"\n"
"\t"STUB_ASM_CODE("476")"\n"

".hidden ""shared_dispatch_stub_477""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_477")"\n"
"\t"STUB_ASM_CODE("477")"\n"

".hidden ""shared_dispatch_stub_478""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_478")"\n"
"\t"STUB_ASM_CODE("478")"\n"

".hidden ""shared_dispatch_stub_479""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_479")"\n"
"\t"STUB_ASM_CODE("479")"\n"

".hidden ""shared_dispatch_stub_480""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_480")"\n"
"\t"STUB_ASM_CODE("480")"\n"

".hidden ""shared_dispatch_stub_481""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_481")"\n"
"\t"STUB_ASM_CODE("481")"\n"

".hidden ""shared_dispatch_stub_482""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_482")"\n"
"\t"STUB_ASM_CODE("482")"\n"

".hidden ""shared_dispatch_stub_483""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_483")"\n"
"\t"STUB_ASM_CODE("483")"\n"

".hidden ""shared_dispatch_stub_484""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_484")"\n"
"\t"STUB_ASM_CODE("484")"\n"

".hidden ""shared_dispatch_stub_485""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_485")"\n"
"\t"STUB_ASM_CODE("485")"\n"

".hidden ""shared_dispatch_stub_486""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_486")"\n"
"\t"STUB_ASM_CODE("486")"\n"

".hidden ""shared_dispatch_stub_487""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_487")"\n"
"\t"STUB_ASM_CODE("487")"\n"

".hidden ""shared_dispatch_stub_488""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_488")"\n"
"\t"STUB_ASM_CODE("488")"\n"

".hidden ""shared_dispatch_stub_489""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_489")"\n"
"\t"STUB_ASM_CODE("489")"\n"

".hidden ""shared_dispatch_stub_490""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_490")"\n"
"\t"STUB_ASM_CODE("490")"\n"

".hidden ""shared_dispatch_stub_491""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_491")"\n"
"\t"STUB_ASM_CODE("491")"\n"

".hidden ""shared_dispatch_stub_492""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_492")"\n"
"\t"STUB_ASM_CODE("492")"\n"

".hidden ""shared_dispatch_stub_493""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_493")"\n"
"\t"STUB_ASM_CODE("493")"\n"

".hidden ""shared_dispatch_stub_494""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_494")"\n"
"\t"STUB_ASM_CODE("494")"\n"

".hidden ""shared_dispatch_stub_495""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_495")"\n"
"\t"STUB_ASM_CODE("495")"\n"

".hidden ""shared_dispatch_stub_496""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_496")"\n"
"\t"STUB_ASM_CODE("496")"\n"

".hidden ""shared_dispatch_stub_497""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_497")"\n"
"\t"STUB_ASM_CODE("497")"\n"

".hidden ""shared_dispatch_stub_498""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_498")"\n"
"\t"STUB_ASM_CODE("498")"\n"

".hidden ""shared_dispatch_stub_499""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_499")"\n"
"\t"STUB_ASM_CODE("499")"\n"

".hidden ""shared_dispatch_stub_500""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_500")"\n"
"\t"STUB_ASM_CODE("500")"\n"

".hidden ""shared_dispatch_stub_501""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_501")"\n"
"\t"STUB_ASM_CODE("501")"\n"

".hidden ""shared_dispatch_stub_502""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_502")"\n"
"\t"STUB_ASM_CODE("502")"\n"

".hidden ""shared_dispatch_stub_503""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_503")"\n"
"\t"STUB_ASM_CODE("503")"\n"

".hidden ""shared_dispatch_stub_504""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_504")"\n"
"\t"STUB_ASM_CODE("504")"\n"

".hidden ""shared_dispatch_stub_505""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_505")"\n"
"\t"STUB_ASM_CODE("505")"\n"

".hidden ""shared_dispatch_stub_506""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_506")"\n"
"\t"STUB_ASM_CODE("506")"\n"

".hidden ""shared_dispatch_stub_507""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_507")"\n"
"\t"STUB_ASM_CODE("507")"\n"

".hidden ""shared_dispatch_stub_508""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_508")"\n"
"\t"STUB_ASM_CODE("508")"\n"

".hidden ""shared_dispatch_stub_509""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_509")"\n"
"\t"STUB_ASM_CODE("509")"\n"

".hidden ""shared_dispatch_stub_510""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_510")"\n"
"\t"STUB_ASM_CODE("510")"\n"

".hidden ""shared_dispatch_stub_511""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_511")"\n"
"\t"STUB_ASM_CODE("511")"\n"

".hidden ""shared_dispatch_stub_512""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_512")"\n"
"\t"STUB_ASM_CODE("512")"\n"

".hidden ""shared_dispatch_stub_513""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_513")"\n"
"\t"STUB_ASM_CODE("513")"\n"

".hidden ""shared_dispatch_stub_514""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_514")"\n"
"\t"STUB_ASM_CODE("514")"\n"

".hidden ""shared_dispatch_stub_515""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_515")"\n"
"\t"STUB_ASM_CODE("515")"\n"

".hidden ""shared_dispatch_stub_516""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_516")"\n"
"\t"STUB_ASM_CODE("516")"\n"

".hidden ""shared_dispatch_stub_517""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_517")"\n"
"\t"STUB_ASM_CODE("517")"\n"

".hidden ""shared_dispatch_stub_518""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_518")"\n"
"\t"STUB_ASM_CODE("518")"\n"

".hidden ""shared_dispatch_stub_519""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_519")"\n"
"\t"STUB_ASM_CODE("519")"\n"

".hidden ""shared_dispatch_stub_520""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_520")"\n"
"\t"STUB_ASM_CODE("520")"\n"

".hidden ""shared_dispatch_stub_521""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_521")"\n"
"\t"STUB_ASM_CODE("521")"\n"

".hidden ""shared_dispatch_stub_522""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_522")"\n"
"\t"STUB_ASM_CODE("522")"\n"

".hidden ""shared_dispatch_stub_523""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_523")"\n"
"\t"STUB_ASM_CODE("523")"\n"

".hidden ""shared_dispatch_stub_524""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_524")"\n"
"\t"STUB_ASM_CODE("524")"\n"

".hidden ""shared_dispatch_stub_525""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_525")"\n"
"\t"STUB_ASM_CODE("525")"\n"

".hidden ""shared_dispatch_stub_526""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_526")"\n"
"\t"STUB_ASM_CODE("526")"\n"

".hidden ""shared_dispatch_stub_527""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_527")"\n"
"\t"STUB_ASM_CODE("527")"\n"

".hidden ""shared_dispatch_stub_528""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_528")"\n"
"\t"STUB_ASM_CODE("528")"\n"

".hidden ""shared_dispatch_stub_529""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_529")"\n"
"\t"STUB_ASM_CODE("529")"\n"

".hidden ""shared_dispatch_stub_530""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_530")"\n"
"\t"STUB_ASM_CODE("530")"\n"

".hidden ""shared_dispatch_stub_531""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_531")"\n"
"\t"STUB_ASM_CODE("531")"\n"

".hidden ""shared_dispatch_stub_532""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_532")"\n"
"\t"STUB_ASM_CODE("532")"\n"

".hidden ""shared_dispatch_stub_533""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_533")"\n"
"\t"STUB_ASM_CODE("533")"\n"

".hidden ""shared_dispatch_stub_534""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_534")"\n"
"\t"STUB_ASM_CODE("534")"\n"

".hidden ""shared_dispatch_stub_535""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_535")"\n"
"\t"STUB_ASM_CODE("535")"\n"

".hidden ""shared_dispatch_stub_536""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_536")"\n"
"\t"STUB_ASM_CODE("536")"\n"

".hidden ""shared_dispatch_stub_537""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_537")"\n"
"\t"STUB_ASM_CODE("537")"\n"

".hidden ""shared_dispatch_stub_538""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_538")"\n"
"\t"STUB_ASM_CODE("538")"\n"

".hidden ""shared_dispatch_stub_539""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_539")"\n"
"\t"STUB_ASM_CODE("539")"\n"

".hidden ""shared_dispatch_stub_540""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_540")"\n"
"\t"STUB_ASM_CODE("540")"\n"

".hidden ""shared_dispatch_stub_541""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_541")"\n"
"\t"STUB_ASM_CODE("541")"\n"

".hidden ""shared_dispatch_stub_542""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_542")"\n"
"\t"STUB_ASM_CODE("542")"\n"

".hidden ""shared_dispatch_stub_543""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_543")"\n"
"\t"STUB_ASM_CODE("543")"\n"

".hidden ""shared_dispatch_stub_544""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_544")"\n"
"\t"STUB_ASM_CODE("544")"\n"

".hidden ""shared_dispatch_stub_545""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_545")"\n"
"\t"STUB_ASM_CODE("545")"\n"

".hidden ""shared_dispatch_stub_546""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_546")"\n"
"\t"STUB_ASM_CODE("546")"\n"

".hidden ""shared_dispatch_stub_547""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_547")"\n"
"\t"STUB_ASM_CODE("547")"\n"

".hidden ""shared_dispatch_stub_548""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_548")"\n"
"\t"STUB_ASM_CODE("548")"\n"

".hidden ""shared_dispatch_stub_549""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_549")"\n"
"\t"STUB_ASM_CODE("549")"\n"

".hidden ""shared_dispatch_stub_550""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_550")"\n"
"\t"STUB_ASM_CODE("550")"\n"

".hidden ""shared_dispatch_stub_551""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_551")"\n"
"\t"STUB_ASM_CODE("551")"\n"

".hidden ""shared_dispatch_stub_552""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_552")"\n"
"\t"STUB_ASM_CODE("552")"\n"

".hidden ""shared_dispatch_stub_553""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_553")"\n"
"\t"STUB_ASM_CODE("553")"\n"

".hidden ""shared_dispatch_stub_554""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_554")"\n"
"\t"STUB_ASM_CODE("554")"\n"

".hidden ""shared_dispatch_stub_555""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_555")"\n"
"\t"STUB_ASM_CODE("555")"\n"

".hidden ""shared_dispatch_stub_556""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_556")"\n"
"\t"STUB_ASM_CODE("556")"\n"

".hidden ""shared_dispatch_stub_557""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_557")"\n"
"\t"STUB_ASM_CODE("557")"\n"

".hidden ""shared_dispatch_stub_558""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_558")"\n"
"\t"STUB_ASM_CODE("558")"\n"

".hidden ""shared_dispatch_stub_559""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_559")"\n"
"\t"STUB_ASM_CODE("559")"\n"

".hidden ""shared_dispatch_stub_560""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_560")"\n"
"\t"STUB_ASM_CODE("560")"\n"

".hidden ""shared_dispatch_stub_561""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_561")"\n"
"\t"STUB_ASM_CODE("561")"\n"

".hidden ""shared_dispatch_stub_562""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_562")"\n"
"\t"STUB_ASM_CODE("562")"\n"

".hidden ""shared_dispatch_stub_563""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_563")"\n"
"\t"STUB_ASM_CODE("563")"\n"

".hidden ""shared_dispatch_stub_564""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_564")"\n"
"\t"STUB_ASM_CODE("564")"\n"

".hidden ""shared_dispatch_stub_565""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_565")"\n"
"\t"STUB_ASM_CODE("565")"\n"

".hidden ""shared_dispatch_stub_566""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_566")"\n"
"\t"STUB_ASM_CODE("566")"\n"

".hidden ""shared_dispatch_stub_567""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_567")"\n"
"\t"STUB_ASM_CODE("567")"\n"

".hidden ""shared_dispatch_stub_568""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_568")"\n"
"\t"STUB_ASM_CODE("568")"\n"

".hidden ""shared_dispatch_stub_569""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_569")"\n"
"\t"STUB_ASM_CODE("569")"\n"

".hidden ""shared_dispatch_stub_570""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_570")"\n"
"\t"STUB_ASM_CODE("570")"\n"

".hidden ""shared_dispatch_stub_571""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_571")"\n"
"\t"STUB_ASM_CODE("571")"\n"

".hidden ""shared_dispatch_stub_572""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_572")"\n"
"\t"STUB_ASM_CODE("572")"\n"

".hidden ""shared_dispatch_stub_573""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_573")"\n"
"\t"STUB_ASM_CODE("573")"\n"

".hidden ""shared_dispatch_stub_574""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_574")"\n"
"\t"STUB_ASM_CODE("574")"\n"

".hidden ""shared_dispatch_stub_575""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_575")"\n"
"\t"STUB_ASM_CODE("575")"\n"

".hidden ""shared_dispatch_stub_576""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_576")"\n"
"\t"STUB_ASM_CODE("576")"\n"

".hidden ""shared_dispatch_stub_577""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_577")"\n"
"\t"STUB_ASM_CODE("577")"\n"

".hidden ""shared_dispatch_stub_578""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_578")"\n"
"\t"STUB_ASM_CODE("578")"\n"

".hidden ""shared_dispatch_stub_579""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_579")"\n"
"\t"STUB_ASM_CODE("579")"\n"

".hidden ""shared_dispatch_stub_580""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_580")"\n"
"\t"STUB_ASM_CODE("580")"\n"

".hidden ""shared_dispatch_stub_581""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_581")"\n"
"\t"STUB_ASM_CODE("581")"\n"

".hidden ""shared_dispatch_stub_582""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_582")"\n"
"\t"STUB_ASM_CODE("582")"\n"

".hidden ""shared_dispatch_stub_583""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_583")"\n"
"\t"STUB_ASM_CODE("583")"\n"

".hidden ""shared_dispatch_stub_584""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_584")"\n"
"\t"STUB_ASM_CODE("584")"\n"

".hidden ""shared_dispatch_stub_585""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_585")"\n"
"\t"STUB_ASM_CODE("585")"\n"

".hidden ""shared_dispatch_stub_586""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_586")"\n"
"\t"STUB_ASM_CODE("586")"\n"

".hidden ""shared_dispatch_stub_587""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_587")"\n"
"\t"STUB_ASM_CODE("587")"\n"

".hidden ""shared_dispatch_stub_588""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_588")"\n"
"\t"STUB_ASM_CODE("588")"\n"

".hidden ""shared_dispatch_stub_589""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_589")"\n"
"\t"STUB_ASM_CODE("589")"\n"

".hidden ""shared_dispatch_stub_590""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_590")"\n"
"\t"STUB_ASM_CODE("590")"\n"

".hidden ""shared_dispatch_stub_591""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_591")"\n"
"\t"STUB_ASM_CODE("591")"\n"

".hidden ""shared_dispatch_stub_592""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_592")"\n"
"\t"STUB_ASM_CODE("592")"\n"

".hidden ""shared_dispatch_stub_593""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_593")"\n"
"\t"STUB_ASM_CODE("593")"\n"

".hidden ""shared_dispatch_stub_594""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_594")"\n"
"\t"STUB_ASM_CODE("594")"\n"

".hidden ""shared_dispatch_stub_595""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_595")"\n"
"\t"STUB_ASM_CODE("595")"\n"

".hidden ""shared_dispatch_stub_596""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_596")"\n"
"\t"STUB_ASM_CODE("596")"\n"

".hidden ""shared_dispatch_stub_597""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_597")"\n"
"\t"STUB_ASM_CODE("597")"\n"

".hidden ""shared_dispatch_stub_598""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_598")"\n"
"\t"STUB_ASM_CODE("598")"\n"

".hidden ""shared_dispatch_stub_599""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_599")"\n"
"\t"STUB_ASM_CODE("599")"\n"

".hidden ""shared_dispatch_stub_600""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_600")"\n"
"\t"STUB_ASM_CODE("600")"\n"

".hidden ""shared_dispatch_stub_601""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_601")"\n"
"\t"STUB_ASM_CODE("601")"\n"

".hidden ""shared_dispatch_stub_602""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_602")"\n"
"\t"STUB_ASM_CODE("602")"\n"

".hidden ""shared_dispatch_stub_603""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_603")"\n"
"\t"STUB_ASM_CODE("603")"\n"

".hidden ""shared_dispatch_stub_604""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_604")"\n"
"\t"STUB_ASM_CODE("604")"\n"

".hidden ""shared_dispatch_stub_605""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_605")"\n"
"\t"STUB_ASM_CODE("605")"\n"

".hidden ""shared_dispatch_stub_606""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_606")"\n"
"\t"STUB_ASM_CODE("606")"\n"

".hidden ""shared_dispatch_stub_607""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_607")"\n"
"\t"STUB_ASM_CODE("607")"\n"

".hidden ""shared_dispatch_stub_608""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_608")"\n"
"\t"STUB_ASM_CODE("608")"\n"

".hidden ""shared_dispatch_stub_609""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_609")"\n"
"\t"STUB_ASM_CODE("609")"\n"

".hidden ""shared_dispatch_stub_610""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_610")"\n"
"\t"STUB_ASM_CODE("610")"\n"

".hidden ""shared_dispatch_stub_611""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_611")"\n"
"\t"STUB_ASM_CODE("611")"\n"

".hidden ""shared_dispatch_stub_612""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_612")"\n"
"\t"STUB_ASM_CODE("612")"\n"

".hidden ""shared_dispatch_stub_613""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_613")"\n"
"\t"STUB_ASM_CODE("613")"\n"

".hidden ""shared_dispatch_stub_614""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_614")"\n"
"\t"STUB_ASM_CODE("614")"\n"

".hidden ""shared_dispatch_stub_615""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_615")"\n"
"\t"STUB_ASM_CODE("615")"\n"

".hidden ""shared_dispatch_stub_616""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_616")"\n"
"\t"STUB_ASM_CODE("616")"\n"

".hidden ""shared_dispatch_stub_617""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_617")"\n"
"\t"STUB_ASM_CODE("617")"\n"

".hidden ""shared_dispatch_stub_618""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_618")"\n"
"\t"STUB_ASM_CODE("618")"\n"

".hidden ""shared_dispatch_stub_619""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_619")"\n"
"\t"STUB_ASM_CODE("619")"\n"

".hidden ""shared_dispatch_stub_620""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_620")"\n"
"\t"STUB_ASM_CODE("620")"\n"

".hidden ""shared_dispatch_stub_621""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_621")"\n"
"\t"STUB_ASM_CODE("621")"\n"

".hidden ""shared_dispatch_stub_622""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_622")"\n"
"\t"STUB_ASM_CODE("622")"\n"

".hidden ""shared_dispatch_stub_623""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_623")"\n"
"\t"STUB_ASM_CODE("623")"\n"

".hidden ""shared_dispatch_stub_624""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_624")"\n"
"\t"STUB_ASM_CODE("624")"\n"

".hidden ""shared_dispatch_stub_625""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_625")"\n"
"\t"STUB_ASM_CODE("625")"\n"

".hidden ""shared_dispatch_stub_626""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_626")"\n"
"\t"STUB_ASM_CODE("626")"\n"

".hidden ""shared_dispatch_stub_627""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_627")"\n"
"\t"STUB_ASM_CODE("627")"\n"

".hidden ""shared_dispatch_stub_628""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_628")"\n"
"\t"STUB_ASM_CODE("628")"\n"

".hidden ""shared_dispatch_stub_629""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_629")"\n"
"\t"STUB_ASM_CODE("629")"\n"

".hidden ""shared_dispatch_stub_630""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_630")"\n"
"\t"STUB_ASM_CODE("630")"\n"

".hidden ""shared_dispatch_stub_631""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_631")"\n"
"\t"STUB_ASM_CODE("631")"\n"

".hidden ""shared_dispatch_stub_632""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_632")"\n"
"\t"STUB_ASM_CODE("632")"\n"

".hidden ""shared_dispatch_stub_633""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_633")"\n"
"\t"STUB_ASM_CODE("633")"\n"

".hidden ""shared_dispatch_stub_634""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_634")"\n"
"\t"STUB_ASM_CODE("634")"\n"

".hidden ""shared_dispatch_stub_635""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_635")"\n"
"\t"STUB_ASM_CODE("635")"\n"

".hidden ""shared_dispatch_stub_636""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_636")"\n"
"\t"STUB_ASM_CODE("636")"\n"

".hidden ""shared_dispatch_stub_637""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_637")"\n"
"\t"STUB_ASM_CODE("637")"\n"

".hidden ""shared_dispatch_stub_638""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_638")"\n"
"\t"STUB_ASM_CODE("638")"\n"

".hidden ""shared_dispatch_stub_639""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_639")"\n"
"\t"STUB_ASM_CODE("639")"\n"

".hidden ""shared_dispatch_stub_640""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_640")"\n"
"\t"STUB_ASM_CODE("640")"\n"

".hidden ""shared_dispatch_stub_641""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_641")"\n"
"\t"STUB_ASM_CODE("641")"\n"

".hidden ""shared_dispatch_stub_642""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_642")"\n"
"\t"STUB_ASM_CODE("642")"\n"

".hidden ""shared_dispatch_stub_643""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_643")"\n"
"\t"STUB_ASM_CODE("643")"\n"

".hidden ""shared_dispatch_stub_644""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_644")"\n"
"\t"STUB_ASM_CODE("644")"\n"

".hidden ""shared_dispatch_stub_645""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_645")"\n"
"\t"STUB_ASM_CODE("645")"\n"

".hidden ""shared_dispatch_stub_646""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_646")"\n"
"\t"STUB_ASM_CODE("646")"\n"

".hidden ""shared_dispatch_stub_647""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_647")"\n"
"\t"STUB_ASM_CODE("647")"\n"

".hidden ""shared_dispatch_stub_648""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_648")"\n"
"\t"STUB_ASM_CODE("648")"\n"

".hidden ""shared_dispatch_stub_649""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_649")"\n"
"\t"STUB_ASM_CODE("649")"\n"

".hidden ""shared_dispatch_stub_650""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_650")"\n"
"\t"STUB_ASM_CODE("650")"\n"

".hidden ""shared_dispatch_stub_651""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_651")"\n"
"\t"STUB_ASM_CODE("651")"\n"

".hidden ""shared_dispatch_stub_652""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_652")"\n"
"\t"STUB_ASM_CODE("652")"\n"

".hidden ""shared_dispatch_stub_653""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_653")"\n"
"\t"STUB_ASM_CODE("653")"\n"

".hidden ""shared_dispatch_stub_654""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_654")"\n"
"\t"STUB_ASM_CODE("654")"\n"

".hidden ""shared_dispatch_stub_655""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_655")"\n"
"\t"STUB_ASM_CODE("655")"\n"

".hidden ""shared_dispatch_stub_656""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_656")"\n"
"\t"STUB_ASM_CODE("656")"\n"

".hidden ""shared_dispatch_stub_657""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_657")"\n"
"\t"STUB_ASM_CODE("657")"\n"

".hidden ""shared_dispatch_stub_658""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_658")"\n"
"\t"STUB_ASM_CODE("658")"\n"

".hidden ""shared_dispatch_stub_659""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_659")"\n"
"\t"STUB_ASM_CODE("659")"\n"

".hidden ""shared_dispatch_stub_660""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_660")"\n"
"\t"STUB_ASM_CODE("660")"\n"

".hidden ""shared_dispatch_stub_661""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_661")"\n"
"\t"STUB_ASM_CODE("661")"\n"

".hidden ""shared_dispatch_stub_662""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_662")"\n"
"\t"STUB_ASM_CODE("662")"\n"

".hidden ""shared_dispatch_stub_663""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_663")"\n"
"\t"STUB_ASM_CODE("663")"\n"

".hidden ""shared_dispatch_stub_664""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_664")"\n"
"\t"STUB_ASM_CODE("664")"\n"

".hidden ""shared_dispatch_stub_665""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_665")"\n"
"\t"STUB_ASM_CODE("665")"\n"

".hidden ""shared_dispatch_stub_666""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_666")"\n"
"\t"STUB_ASM_CODE("666")"\n"

".hidden ""shared_dispatch_stub_667""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_667")"\n"
"\t"STUB_ASM_CODE("667")"\n"

".hidden ""shared_dispatch_stub_668""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_668")"\n"
"\t"STUB_ASM_CODE("668")"\n"

".hidden ""shared_dispatch_stub_669""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_669")"\n"
"\t"STUB_ASM_CODE("669")"\n"

".hidden ""shared_dispatch_stub_670""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_670")"\n"
"\t"STUB_ASM_CODE("670")"\n"

".hidden ""shared_dispatch_stub_671""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_671")"\n"
"\t"STUB_ASM_CODE("671")"\n"

".hidden ""shared_dispatch_stub_672""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_672")"\n"
"\t"STUB_ASM_CODE("672")"\n"

".hidden ""shared_dispatch_stub_673""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_673")"\n"
"\t"STUB_ASM_CODE("673")"\n"

".hidden ""shared_dispatch_stub_674""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_674")"\n"
"\t"STUB_ASM_CODE("674")"\n"

".hidden ""shared_dispatch_stub_675""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_675")"\n"
"\t"STUB_ASM_CODE("675")"\n"

".hidden ""shared_dispatch_stub_676""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_676")"\n"
"\t"STUB_ASM_CODE("676")"\n"

".hidden ""shared_dispatch_stub_677""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_677")"\n"
"\t"STUB_ASM_CODE("677")"\n"

".hidden ""shared_dispatch_stub_678""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_678")"\n"
"\t"STUB_ASM_CODE("678")"\n"

".hidden ""shared_dispatch_stub_679""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_679")"\n"
"\t"STUB_ASM_CODE("679")"\n"

".hidden ""shared_dispatch_stub_680""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_680")"\n"
"\t"STUB_ASM_CODE("680")"\n"

".hidden ""shared_dispatch_stub_681""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_681")"\n"
"\t"STUB_ASM_CODE("681")"\n"

".hidden ""shared_dispatch_stub_682""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_682")"\n"
"\t"STUB_ASM_CODE("682")"\n"

".hidden ""shared_dispatch_stub_683""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_683")"\n"
"\t"STUB_ASM_CODE("683")"\n"

".hidden ""shared_dispatch_stub_684""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_684")"\n"
"\t"STUB_ASM_CODE("684")"\n"

".hidden ""shared_dispatch_stub_685""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_685")"\n"
"\t"STUB_ASM_CODE("685")"\n"

".hidden ""shared_dispatch_stub_686""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_686")"\n"
"\t"STUB_ASM_CODE("686")"\n"

".hidden ""shared_dispatch_stub_687""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_687")"\n"
"\t"STUB_ASM_CODE("687")"\n"

".hidden ""shared_dispatch_stub_688""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_688")"\n"
"\t"STUB_ASM_CODE("688")"\n"

".hidden ""shared_dispatch_stub_689""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_689")"\n"
"\t"STUB_ASM_CODE("689")"\n"

".hidden ""shared_dispatch_stub_690""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_690")"\n"
"\t"STUB_ASM_CODE("690")"\n"

".hidden ""shared_dispatch_stub_691""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_691")"\n"
"\t"STUB_ASM_CODE("691")"\n"

".hidden ""shared_dispatch_stub_692""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_692")"\n"
"\t"STUB_ASM_CODE("692")"\n"

".hidden ""shared_dispatch_stub_693""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_693")"\n"
"\t"STUB_ASM_CODE("693")"\n"

".hidden ""shared_dispatch_stub_694""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_694")"\n"
"\t"STUB_ASM_CODE("694")"\n"

".hidden ""shared_dispatch_stub_695""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_695")"\n"
"\t"STUB_ASM_CODE("695")"\n"

".hidden ""shared_dispatch_stub_696""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_696")"\n"
"\t"STUB_ASM_CODE("696")"\n"

".hidden ""shared_dispatch_stub_697""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_697")"\n"
"\t"STUB_ASM_CODE("697")"\n"

".hidden ""shared_dispatch_stub_698""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_698")"\n"
"\t"STUB_ASM_CODE("698")"\n"

".hidden ""shared_dispatch_stub_699""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_699")"\n"
"\t"STUB_ASM_CODE("699")"\n"

".hidden ""shared_dispatch_stub_700""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_700")"\n"
"\t"STUB_ASM_CODE("700")"\n"

".hidden ""shared_dispatch_stub_701""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_701")"\n"
"\t"STUB_ASM_CODE("701")"\n"

".hidden ""shared_dispatch_stub_702""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_702")"\n"
"\t"STUB_ASM_CODE("702")"\n"

".hidden ""shared_dispatch_stub_703""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_703")"\n"
"\t"STUB_ASM_CODE("703")"\n"

".hidden ""shared_dispatch_stub_704""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_704")"\n"
"\t"STUB_ASM_CODE("704")"\n"

".hidden ""shared_dispatch_stub_705""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_705")"\n"
"\t"STUB_ASM_CODE("705")"\n"

".hidden ""shared_dispatch_stub_706""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_706")"\n"
"\t"STUB_ASM_CODE("706")"\n"

".hidden ""shared_dispatch_stub_707""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_707")"\n"
"\t"STUB_ASM_CODE("707")"\n"

".hidden ""shared_dispatch_stub_708""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_708")"\n"
"\t"STUB_ASM_CODE("708")"\n"

".hidden ""shared_dispatch_stub_709""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_709")"\n"
"\t"STUB_ASM_CODE("709")"\n"

".hidden ""shared_dispatch_stub_710""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_710")"\n"
"\t"STUB_ASM_CODE("710")"\n"

".hidden ""shared_dispatch_stub_711""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_711")"\n"
"\t"STUB_ASM_CODE("711")"\n"

".hidden ""shared_dispatch_stub_712""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_712")"\n"
"\t"STUB_ASM_CODE("712")"\n"

".hidden ""shared_dispatch_stub_713""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_713")"\n"
"\t"STUB_ASM_CODE("713")"\n"

".hidden ""shared_dispatch_stub_714""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_714")"\n"
"\t"STUB_ASM_CODE("714")"\n"

".hidden ""shared_dispatch_stub_715""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_715")"\n"
"\t"STUB_ASM_CODE("715")"\n"

".hidden ""shared_dispatch_stub_716""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_716")"\n"
"\t"STUB_ASM_CODE("716")"\n"

".hidden ""shared_dispatch_stub_717""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_717")"\n"
"\t"STUB_ASM_CODE("717")"\n"

".hidden ""shared_dispatch_stub_718""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_718")"\n"
"\t"STUB_ASM_CODE("718")"\n"

".hidden ""shared_dispatch_stub_719""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_719")"\n"
"\t"STUB_ASM_CODE("719")"\n"

".hidden ""shared_dispatch_stub_720""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_720")"\n"
"\t"STUB_ASM_CODE("720")"\n"

".hidden ""shared_dispatch_stub_721""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_721")"\n"
"\t"STUB_ASM_CODE("721")"\n"

".hidden ""shared_dispatch_stub_722""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_722")"\n"
"\t"STUB_ASM_CODE("722")"\n"

".hidden ""shared_dispatch_stub_723""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_723")"\n"
"\t"STUB_ASM_CODE("723")"\n"

".hidden ""shared_dispatch_stub_724""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_724")"\n"
"\t"STUB_ASM_CODE("724")"\n"

".hidden ""shared_dispatch_stub_725""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_725")"\n"
"\t"STUB_ASM_CODE("725")"\n"

".hidden ""shared_dispatch_stub_726""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_726")"\n"
"\t"STUB_ASM_CODE("726")"\n"

".hidden ""shared_dispatch_stub_727""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_727")"\n"
"\t"STUB_ASM_CODE("727")"\n"

".hidden ""shared_dispatch_stub_728""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_728")"\n"
"\t"STUB_ASM_CODE("728")"\n"

".hidden ""shared_dispatch_stub_729""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_729")"\n"
"\t"STUB_ASM_CODE("729")"\n"

".hidden ""shared_dispatch_stub_730""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_730")"\n"
"\t"STUB_ASM_CODE("730")"\n"

".hidden ""shared_dispatch_stub_731""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_731")"\n"
"\t"STUB_ASM_CODE("731")"\n"

".hidden ""shared_dispatch_stub_732""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_732")"\n"
"\t"STUB_ASM_CODE("732")"\n"

".hidden ""shared_dispatch_stub_733""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_733")"\n"
"\t"STUB_ASM_CODE("733")"\n"

".hidden ""shared_dispatch_stub_734""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_734")"\n"
"\t"STUB_ASM_CODE("734")"\n"

".hidden ""shared_dispatch_stub_735""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_735")"\n"
"\t"STUB_ASM_CODE("735")"\n"

".hidden ""shared_dispatch_stub_736""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_736")"\n"
"\t"STUB_ASM_CODE("736")"\n"

".hidden ""shared_dispatch_stub_737""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_737")"\n"
"\t"STUB_ASM_CODE("737")"\n"

".hidden ""shared_dispatch_stub_738""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_738")"\n"
"\t"STUB_ASM_CODE("738")"\n"

".hidden ""shared_dispatch_stub_739""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_739")"\n"
"\t"STUB_ASM_CODE("739")"\n"

".hidden ""shared_dispatch_stub_740""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_740")"\n"
"\t"STUB_ASM_CODE("740")"\n"

".hidden ""shared_dispatch_stub_741""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_741")"\n"
"\t"STUB_ASM_CODE("741")"\n"

".hidden ""shared_dispatch_stub_742""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_742")"\n"
"\t"STUB_ASM_CODE("742")"\n"

".hidden ""shared_dispatch_stub_743""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_743")"\n"
"\t"STUB_ASM_CODE("743")"\n"

".hidden ""shared_dispatch_stub_744""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_744")"\n"
"\t"STUB_ASM_CODE("744")"\n"

".hidden ""shared_dispatch_stub_745""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_745")"\n"
"\t"STUB_ASM_CODE("745")"\n"

".hidden ""shared_dispatch_stub_746""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_746")"\n"
"\t"STUB_ASM_CODE("746")"\n"

".hidden ""shared_dispatch_stub_747""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_747")"\n"
"\t"STUB_ASM_CODE("747")"\n"

".hidden ""shared_dispatch_stub_748""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_748")"\n"
"\t"STUB_ASM_CODE("748")"\n"

".hidden ""shared_dispatch_stub_749""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_749")"\n"
"\t"STUB_ASM_CODE("749")"\n"

".hidden ""shared_dispatch_stub_750""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_750")"\n"
"\t"STUB_ASM_CODE("750")"\n"

".hidden ""shared_dispatch_stub_751""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_751")"\n"
"\t"STUB_ASM_CODE("751")"\n"

".hidden ""shared_dispatch_stub_752""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_752")"\n"
"\t"STUB_ASM_CODE("752")"\n"

".hidden ""shared_dispatch_stub_753""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_753")"\n"
"\t"STUB_ASM_CODE("753")"\n"

".hidden ""shared_dispatch_stub_754""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_754")"\n"
"\t"STUB_ASM_CODE("754")"\n"

".hidden ""shared_dispatch_stub_755""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_755")"\n"
"\t"STUB_ASM_CODE("755")"\n"

".hidden ""shared_dispatch_stub_756""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_756")"\n"
"\t"STUB_ASM_CODE("756")"\n"

".hidden ""shared_dispatch_stub_757""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_757")"\n"
"\t"STUB_ASM_CODE("757")"\n"

".hidden ""shared_dispatch_stub_758""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_758")"\n"
"\t"STUB_ASM_CODE("758")"\n"

".hidden ""shared_dispatch_stub_759""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_759")"\n"
"\t"STUB_ASM_CODE("759")"\n"

".hidden ""shared_dispatch_stub_760""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_760")"\n"
"\t"STUB_ASM_CODE("760")"\n"

".hidden ""shared_dispatch_stub_761""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_761")"\n"
"\t"STUB_ASM_CODE("761")"\n"

".hidden ""shared_dispatch_stub_762""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_762")"\n"
"\t"STUB_ASM_CODE("762")"\n"

".hidden ""shared_dispatch_stub_763""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_763")"\n"
"\t"STUB_ASM_CODE("763")"\n"

".hidden ""shared_dispatch_stub_764""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_764")"\n"
"\t"STUB_ASM_CODE("764")"\n"

".hidden ""shared_dispatch_stub_765""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_765")"\n"
"\t"STUB_ASM_CODE("765")"\n"

".hidden ""shared_dispatch_stub_766""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_766")"\n"
"\t"STUB_ASM_CODE("766")"\n"

".hidden ""shared_dispatch_stub_767""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_767")"\n"
"\t"STUB_ASM_CODE("767")"\n"

".hidden ""shared_dispatch_stub_768""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_768")"\n"
"\t"STUB_ASM_CODE("768")"\n"

".hidden ""shared_dispatch_stub_769""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_769")"\n"
"\t"STUB_ASM_CODE("769")"\n"

".hidden ""shared_dispatch_stub_770""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_770")"\n"
"\t"STUB_ASM_CODE("770")"\n"

".hidden ""shared_dispatch_stub_771""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_771")"\n"
"\t"STUB_ASM_CODE("771")"\n"

".hidden ""shared_dispatch_stub_772""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_772")"\n"
"\t"STUB_ASM_CODE("772")"\n"

".hidden ""shared_dispatch_stub_773""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_773")"\n"
"\t"STUB_ASM_CODE("773")"\n"

".hidden ""shared_dispatch_stub_774""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_774")"\n"
"\t"STUB_ASM_CODE("774")"\n"

".hidden ""shared_dispatch_stub_775""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_775")"\n"
"\t"STUB_ASM_CODE("775")"\n"

".hidden ""shared_dispatch_stub_776""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_776")"\n"
"\t"STUB_ASM_CODE("776")"\n"

".hidden ""shared_dispatch_stub_777""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_777")"\n"
"\t"STUB_ASM_CODE("777")"\n"

".hidden ""shared_dispatch_stub_778""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_778")"\n"
"\t"STUB_ASM_CODE("778")"\n"

".hidden ""shared_dispatch_stub_779""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_779")"\n"
"\t"STUB_ASM_CODE("779")"\n"

".hidden ""shared_dispatch_stub_780""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_780")"\n"
"\t"STUB_ASM_CODE("780")"\n"

".hidden ""shared_dispatch_stub_781""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_781")"\n"
"\t"STUB_ASM_CODE("781")"\n"

".hidden ""shared_dispatch_stub_782""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_782")"\n"
"\t"STUB_ASM_CODE("782")"\n"

".hidden ""shared_dispatch_stub_783""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_783")"\n"
"\t"STUB_ASM_CODE("783")"\n"

".hidden ""shared_dispatch_stub_784""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_784")"\n"
"\t"STUB_ASM_CODE("784")"\n"

".hidden ""shared_dispatch_stub_785""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_785")"\n"
"\t"STUB_ASM_CODE("785")"\n"

".hidden ""shared_dispatch_stub_786""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_786")"\n"
"\t"STUB_ASM_CODE("786")"\n"

".hidden ""shared_dispatch_stub_787""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_787")"\n"
"\t"STUB_ASM_CODE("787")"\n"

".hidden ""shared_dispatch_stub_788""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_788")"\n"
"\t"STUB_ASM_CODE("788")"\n"

".hidden ""shared_dispatch_stub_789""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_789")"\n"
"\t"STUB_ASM_CODE("789")"\n"

".hidden ""shared_dispatch_stub_790""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_790")"\n"
"\t"STUB_ASM_CODE("790")"\n"

".hidden ""shared_dispatch_stub_791""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_791")"\n"
"\t"STUB_ASM_CODE("791")"\n"

".hidden ""shared_dispatch_stub_792""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_792")"\n"
"\t"STUB_ASM_CODE("792")"\n"

".hidden ""shared_dispatch_stub_793""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_793")"\n"
"\t"STUB_ASM_CODE("793")"\n"

".hidden ""shared_dispatch_stub_794""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_794")"\n"
"\t"STUB_ASM_CODE("794")"\n"

".hidden ""shared_dispatch_stub_795""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_795")"\n"
"\t"STUB_ASM_CODE("795")"\n"

".hidden ""shared_dispatch_stub_796""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_796")"\n"
"\t"STUB_ASM_CODE("796")"\n"

".hidden ""shared_dispatch_stub_797""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_797")"\n"
"\t"STUB_ASM_CODE("797")"\n"

".hidden ""shared_dispatch_stub_798""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_798")"\n"
"\t"STUB_ASM_CODE("798")"\n"

".hidden ""shared_dispatch_stub_799""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_799")"\n"
"\t"STUB_ASM_CODE("799")"\n"

".hidden ""shared_dispatch_stub_800""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_800")"\n"
"\t"STUB_ASM_CODE("800")"\n"

".hidden ""shared_dispatch_stub_801""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_801")"\n"
"\t"STUB_ASM_CODE("801")"\n"

".hidden ""shared_dispatch_stub_802""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_802")"\n"
"\t"STUB_ASM_CODE("802")"\n"

".hidden ""shared_dispatch_stub_803""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_803")"\n"
"\t"STUB_ASM_CODE("803")"\n"

".hidden ""shared_dispatch_stub_804""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_804")"\n"
"\t"STUB_ASM_CODE("804")"\n"

".hidden ""shared_dispatch_stub_805""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_805")"\n"
"\t"STUB_ASM_CODE("805")"\n"

".hidden ""shared_dispatch_stub_806""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_806")"\n"
"\t"STUB_ASM_CODE("806")"\n"

".hidden ""shared_dispatch_stub_807""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_807")"\n"
"\t"STUB_ASM_CODE("807")"\n"

".hidden ""shared_dispatch_stub_808""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_808")"\n"
"\t"STUB_ASM_CODE("808")"\n"

".hidden ""shared_dispatch_stub_809""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_809")"\n"
"\t"STUB_ASM_CODE("809")"\n"

".hidden ""shared_dispatch_stub_810""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_810")"\n"
"\t"STUB_ASM_CODE("810")"\n"

".hidden ""shared_dispatch_stub_811""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_811")"\n"
"\t"STUB_ASM_CODE("811")"\n"

".hidden ""shared_dispatch_stub_812""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_812")"\n"
"\t"STUB_ASM_CODE("812")"\n"

".hidden ""shared_dispatch_stub_813""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_813")"\n"
"\t"STUB_ASM_CODE("813")"\n"

".hidden ""shared_dispatch_stub_814""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_814")"\n"
"\t"STUB_ASM_CODE("814")"\n"

".hidden ""shared_dispatch_stub_815""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_815")"\n"
"\t"STUB_ASM_CODE("815")"\n"

".hidden ""shared_dispatch_stub_816""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_816")"\n"
"\t"STUB_ASM_CODE("816")"\n"

".hidden ""shared_dispatch_stub_817""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_817")"\n"
"\t"STUB_ASM_CODE("817")"\n"

".hidden ""shared_dispatch_stub_818""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_818")"\n"
"\t"STUB_ASM_CODE("818")"\n"

".hidden ""shared_dispatch_stub_819""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_819")"\n"
"\t"STUB_ASM_CODE("819")"\n"

".hidden ""shared_dispatch_stub_820""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_820")"\n"
"\t"STUB_ASM_CODE("820")"\n"

".hidden ""shared_dispatch_stub_821""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_821")"\n"
"\t"STUB_ASM_CODE("821")"\n"

".hidden ""shared_dispatch_stub_822""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_822")"\n"
"\t"STUB_ASM_CODE("822")"\n"

".hidden ""shared_dispatch_stub_823""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_823")"\n"
"\t"STUB_ASM_CODE("823")"\n"

".hidden ""shared_dispatch_stub_824""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_824")"\n"
"\t"STUB_ASM_CODE("824")"\n"

".hidden ""shared_dispatch_stub_825""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_825")"\n"
"\t"STUB_ASM_CODE("825")"\n"

".hidden ""shared_dispatch_stub_826""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_826")"\n"
"\t"STUB_ASM_CODE("826")"\n"

".hidden ""shared_dispatch_stub_827""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_827")"\n"
"\t"STUB_ASM_CODE("827")"\n"

".hidden ""shared_dispatch_stub_828""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_828")"\n"
"\t"STUB_ASM_CODE("828")"\n"

".hidden ""shared_dispatch_stub_829""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_829")"\n"
"\t"STUB_ASM_CODE("829")"\n"

".hidden ""shared_dispatch_stub_830""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_830")"\n"
"\t"STUB_ASM_CODE("830")"\n"

".hidden ""shared_dispatch_stub_831""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_831")"\n"
"\t"STUB_ASM_CODE("831")"\n"

".hidden ""shared_dispatch_stub_832""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_832")"\n"
"\t"STUB_ASM_CODE("832")"\n"

".hidden ""shared_dispatch_stub_833""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_833")"\n"
"\t"STUB_ASM_CODE("833")"\n"

".hidden ""shared_dispatch_stub_834""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_834")"\n"
"\t"STUB_ASM_CODE("834")"\n"

".hidden ""shared_dispatch_stub_835""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_835")"\n"
"\t"STUB_ASM_CODE("835")"\n"

".hidden ""shared_dispatch_stub_836""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_836")"\n"
"\t"STUB_ASM_CODE("836")"\n"

".hidden ""shared_dispatch_stub_837""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_837")"\n"
"\t"STUB_ASM_CODE("837")"\n"

".hidden ""shared_dispatch_stub_838""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_838")"\n"
"\t"STUB_ASM_CODE("838")"\n"

".hidden ""shared_dispatch_stub_839""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_839")"\n"
"\t"STUB_ASM_CODE("839")"\n"

".hidden ""shared_dispatch_stub_840""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_840")"\n"
"\t"STUB_ASM_CODE("840")"\n"

".hidden ""shared_dispatch_stub_841""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_841")"\n"
"\t"STUB_ASM_CODE("841")"\n"

".hidden ""shared_dispatch_stub_842""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_842")"\n"
"\t"STUB_ASM_CODE("842")"\n"

".hidden ""shared_dispatch_stub_843""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_843")"\n"
"\t"STUB_ASM_CODE("843")"\n"

".hidden ""shared_dispatch_stub_844""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_844")"\n"
"\t"STUB_ASM_CODE("844")"\n"

".hidden ""shared_dispatch_stub_845""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_845")"\n"
"\t"STUB_ASM_CODE("845")"\n"

".hidden ""shared_dispatch_stub_846""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_846")"\n"
"\t"STUB_ASM_CODE("846")"\n"

".hidden ""shared_dispatch_stub_847""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_847")"\n"
"\t"STUB_ASM_CODE("847")"\n"

".hidden ""shared_dispatch_stub_848""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_848")"\n"
"\t"STUB_ASM_CODE("848")"\n"

".hidden ""shared_dispatch_stub_849""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_849")"\n"
"\t"STUB_ASM_CODE("849")"\n"

".hidden ""shared_dispatch_stub_850""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_850")"\n"
"\t"STUB_ASM_CODE("850")"\n"

".hidden ""shared_dispatch_stub_851""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_851")"\n"
"\t"STUB_ASM_CODE("851")"\n"

".hidden ""shared_dispatch_stub_852""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_852")"\n"
"\t"STUB_ASM_CODE("852")"\n"

".hidden ""shared_dispatch_stub_853""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_853")"\n"
"\t"STUB_ASM_CODE("853")"\n"

".hidden ""shared_dispatch_stub_854""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_854")"\n"
"\t"STUB_ASM_CODE("854")"\n"

".hidden ""shared_dispatch_stub_855""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_855")"\n"
"\t"STUB_ASM_CODE("855")"\n"

".hidden ""shared_dispatch_stub_856""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_856")"\n"
"\t"STUB_ASM_CODE("856")"\n"

".hidden ""shared_dispatch_stub_857""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_857")"\n"
"\t"STUB_ASM_CODE("857")"\n"

".hidden ""shared_dispatch_stub_858""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_858")"\n"
"\t"STUB_ASM_CODE("858")"\n"

".hidden ""shared_dispatch_stub_859""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_859")"\n"
"\t"STUB_ASM_CODE("859")"\n"

".hidden ""shared_dispatch_stub_860""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_860")"\n"
"\t"STUB_ASM_CODE("860")"\n"

".hidden ""shared_dispatch_stub_861""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_861")"\n"
"\t"STUB_ASM_CODE("861")"\n"

".hidden ""shared_dispatch_stub_862""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_862")"\n"
"\t"STUB_ASM_CODE("862")"\n"

".hidden ""shared_dispatch_stub_863""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_863")"\n"
"\t"STUB_ASM_CODE("863")"\n"

".hidden ""shared_dispatch_stub_864""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_864")"\n"
"\t"STUB_ASM_CODE("864")"\n"

".hidden ""shared_dispatch_stub_865""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_865")"\n"
"\t"STUB_ASM_CODE("865")"\n"

".hidden ""shared_dispatch_stub_866""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_866")"\n"
"\t"STUB_ASM_CODE("866")"\n"

".hidden ""shared_dispatch_stub_867""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_867")"\n"
"\t"STUB_ASM_CODE("867")"\n"

".hidden ""shared_dispatch_stub_868""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_868")"\n"
"\t"STUB_ASM_CODE("868")"\n"

".hidden ""shared_dispatch_stub_869""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_869")"\n"
"\t"STUB_ASM_CODE("869")"\n"

".hidden ""shared_dispatch_stub_870""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_870")"\n"
"\t"STUB_ASM_CODE("870")"\n"

".hidden ""shared_dispatch_stub_871""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_871")"\n"
"\t"STUB_ASM_CODE("871")"\n"

".hidden ""shared_dispatch_stub_872""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_872")"\n"
"\t"STUB_ASM_CODE("872")"\n"

".hidden ""shared_dispatch_stub_873""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_873")"\n"
"\t"STUB_ASM_CODE("873")"\n"

".hidden ""shared_dispatch_stub_874""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_874")"\n"
"\t"STUB_ASM_CODE("874")"\n"

".hidden ""shared_dispatch_stub_875""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_875")"\n"
"\t"STUB_ASM_CODE("875")"\n"

".hidden ""shared_dispatch_stub_876""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_876")"\n"
"\t"STUB_ASM_CODE("876")"\n"

".hidden ""shared_dispatch_stub_877""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_877")"\n"
"\t"STUB_ASM_CODE("877")"\n"

".hidden ""shared_dispatch_stub_878""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_878")"\n"
"\t"STUB_ASM_CODE("878")"\n"

".hidden ""shared_dispatch_stub_879""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_879")"\n"
"\t"STUB_ASM_CODE("879")"\n"

".hidden ""shared_dispatch_stub_880""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_880")"\n"
"\t"STUB_ASM_CODE("880")"\n"

".hidden ""shared_dispatch_stub_881""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_881")"\n"
"\t"STUB_ASM_CODE("881")"\n"

".hidden ""shared_dispatch_stub_882""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_882")"\n"
"\t"STUB_ASM_CODE("882")"\n"

".hidden ""shared_dispatch_stub_883""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_883")"\n"
"\t"STUB_ASM_CODE("883")"\n"

".hidden ""shared_dispatch_stub_884""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_884")"\n"
"\t"STUB_ASM_CODE("884")"\n"

".hidden ""shared_dispatch_stub_885""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_885")"\n"
"\t"STUB_ASM_CODE("885")"\n"

".hidden ""shared_dispatch_stub_886""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_886")"\n"
"\t"STUB_ASM_CODE("886")"\n"

".hidden ""shared_dispatch_stub_887""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_887")"\n"
"\t"STUB_ASM_CODE("887")"\n"

".hidden ""shared_dispatch_stub_888""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_888")"\n"
"\t"STUB_ASM_CODE("888")"\n"

".hidden ""shared_dispatch_stub_889""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_889")"\n"
"\t"STUB_ASM_CODE("889")"\n"

".hidden ""shared_dispatch_stub_890""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_890")"\n"
"\t"STUB_ASM_CODE("890")"\n"

".hidden ""shared_dispatch_stub_891""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_891")"\n"
"\t"STUB_ASM_CODE("891")"\n"

".hidden ""shared_dispatch_stub_892""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_892")"\n"
"\t"STUB_ASM_CODE("892")"\n"

".hidden ""shared_dispatch_stub_893""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_893")"\n"
"\t"STUB_ASM_CODE("893")"\n"

".hidden ""shared_dispatch_stub_894""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_894")"\n"
"\t"STUB_ASM_CODE("894")"\n"

".hidden ""shared_dispatch_stub_895""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_895")"\n"
"\t"STUB_ASM_CODE("895")"\n"

".hidden ""shared_dispatch_stub_896""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_896")"\n"
"\t"STUB_ASM_CODE("896")"\n"

".hidden ""shared_dispatch_stub_897""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_897")"\n"
"\t"STUB_ASM_CODE("897")"\n"

".hidden ""shared_dispatch_stub_898""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_898")"\n"
"\t"STUB_ASM_CODE("898")"\n"

".hidden ""shared_dispatch_stub_899""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_899")"\n"
"\t"STUB_ASM_CODE("899")"\n"

".hidden ""shared_dispatch_stub_900""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_900")"\n"
"\t"STUB_ASM_CODE("900")"\n"

".hidden ""shared_dispatch_stub_901""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_901")"\n"
"\t"STUB_ASM_CODE("901")"\n"

".hidden ""shared_dispatch_stub_902""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_902")"\n"
"\t"STUB_ASM_CODE("902")"\n"

".hidden ""shared_dispatch_stub_903""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_903")"\n"
"\t"STUB_ASM_CODE("903")"\n"

".hidden ""shared_dispatch_stub_904""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_904")"\n"
"\t"STUB_ASM_CODE("904")"\n"

".hidden ""shared_dispatch_stub_905""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_905")"\n"
"\t"STUB_ASM_CODE("905")"\n"

".hidden ""shared_dispatch_stub_906""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_906")"\n"
"\t"STUB_ASM_CODE("906")"\n"

".hidden ""shared_dispatch_stub_907""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_907")"\n"
"\t"STUB_ASM_CODE("907")"\n"

".hidden ""shared_dispatch_stub_908""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_908")"\n"
"\t"STUB_ASM_CODE("908")"\n"

".hidden ""shared_dispatch_stub_909""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_909")"\n"
"\t"STUB_ASM_CODE("909")"\n"

".hidden ""shared_dispatch_stub_910""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_910")"\n"
"\t"STUB_ASM_CODE("910")"\n"

".hidden ""shared_dispatch_stub_911""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_911")"\n"
"\t"STUB_ASM_CODE("911")"\n"

".hidden ""shared_dispatch_stub_912""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_912")"\n"
"\t"STUB_ASM_CODE("912")"\n"

".hidden ""shared_dispatch_stub_913""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_913")"\n"
"\t"STUB_ASM_CODE("913")"\n"

".hidden ""shared_dispatch_stub_914""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_914")"\n"
"\t"STUB_ASM_CODE("914")"\n"

".hidden ""shared_dispatch_stub_915""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_915")"\n"
"\t"STUB_ASM_CODE("915")"\n"

".hidden ""shared_dispatch_stub_916""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_916")"\n"
"\t"STUB_ASM_CODE("916")"\n"

".hidden ""shared_dispatch_stub_917""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_917")"\n"
"\t"STUB_ASM_CODE("917")"\n"

".hidden ""shared_dispatch_stub_918""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_918")"\n"
"\t"STUB_ASM_CODE("918")"\n"

".hidden ""shared_dispatch_stub_919""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_919")"\n"
"\t"STUB_ASM_CODE("919")"\n"

".hidden ""shared_dispatch_stub_920""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_920")"\n"
"\t"STUB_ASM_CODE("920")"\n"

".hidden ""shared_dispatch_stub_921""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_921")"\n"
"\t"STUB_ASM_CODE("921")"\n"

".hidden ""shared_dispatch_stub_922""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_922")"\n"
"\t"STUB_ASM_CODE("922")"\n"

".hidden ""shared_dispatch_stub_923""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_923")"\n"
"\t"STUB_ASM_CODE("923")"\n"

".hidden ""shared_dispatch_stub_924""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_924")"\n"
"\t"STUB_ASM_CODE("924")"\n"

".hidden ""shared_dispatch_stub_925""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_925")"\n"
"\t"STUB_ASM_CODE("925")"\n"

".hidden ""shared_dispatch_stub_926""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_926")"\n"
"\t"STUB_ASM_CODE("926")"\n"

".hidden ""shared_dispatch_stub_927""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_927")"\n"
"\t"STUB_ASM_CODE("927")"\n"

".hidden ""shared_dispatch_stub_928""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_928")"\n"
"\t"STUB_ASM_CODE("928")"\n"

".hidden ""shared_dispatch_stub_929""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_929")"\n"
"\t"STUB_ASM_CODE("929")"\n"

".hidden ""shared_dispatch_stub_930""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_930")"\n"
"\t"STUB_ASM_CODE("930")"\n"

".hidden ""shared_dispatch_stub_931""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_931")"\n"
"\t"STUB_ASM_CODE("931")"\n"

".hidden ""shared_dispatch_stub_932""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_932")"\n"
"\t"STUB_ASM_CODE("932")"\n"

".hidden ""shared_dispatch_stub_933""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_933")"\n"
"\t"STUB_ASM_CODE("933")"\n"

".hidden ""shared_dispatch_stub_934""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_934")"\n"
"\t"STUB_ASM_CODE("934")"\n"

".hidden ""shared_dispatch_stub_935""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_935")"\n"
"\t"STUB_ASM_CODE("935")"\n"

".hidden ""shared_dispatch_stub_936""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_936")"\n"
"\t"STUB_ASM_CODE("936")"\n"

".hidden ""shared_dispatch_stub_937""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_937")"\n"
"\t"STUB_ASM_CODE("937")"\n"

".hidden ""shared_dispatch_stub_938""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_938")"\n"
"\t"STUB_ASM_CODE("938")"\n"

".hidden ""shared_dispatch_stub_939""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_939")"\n"
"\t"STUB_ASM_CODE("939")"\n"

".hidden ""shared_dispatch_stub_940""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_940")"\n"
"\t"STUB_ASM_CODE("940")"\n"

".hidden ""shared_dispatch_stub_941""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_941")"\n"
"\t"STUB_ASM_CODE("941")"\n"

".hidden ""shared_dispatch_stub_942""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_942")"\n"
"\t"STUB_ASM_CODE("942")"\n"

".hidden ""shared_dispatch_stub_943""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_943")"\n"
"\t"STUB_ASM_CODE("943")"\n"

".hidden ""shared_dispatch_stub_944""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_944")"\n"
"\t"STUB_ASM_CODE("944")"\n"

".hidden ""shared_dispatch_stub_945""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_945")"\n"
"\t"STUB_ASM_CODE("945")"\n"

".hidden ""shared_dispatch_stub_946""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_946")"\n"
"\t"STUB_ASM_CODE("946")"\n"

".hidden ""shared_dispatch_stub_947""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_947")"\n"
"\t"STUB_ASM_CODE("947")"\n"

".hidden ""shared_dispatch_stub_948""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_948")"\n"
"\t"STUB_ASM_CODE("948")"\n"

".hidden ""shared_dispatch_stub_949""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_949")"\n"
"\t"STUB_ASM_CODE("949")"\n"

".hidden ""shared_dispatch_stub_950""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_950")"\n"
"\t"STUB_ASM_CODE("950")"\n"

".hidden ""shared_dispatch_stub_951""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_951")"\n"
"\t"STUB_ASM_CODE("951")"\n"

".hidden ""shared_dispatch_stub_952""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_952")"\n"
"\t"STUB_ASM_CODE("952")"\n"

".hidden ""shared_dispatch_stub_953""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_953")"\n"
"\t"STUB_ASM_CODE("953")"\n"

".hidden ""shared_dispatch_stub_954""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_954")"\n"
"\t"STUB_ASM_CODE("954")"\n"

".hidden ""shared_dispatch_stub_955""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_955")"\n"
"\t"STUB_ASM_CODE("955")"\n"

".hidden ""shared_dispatch_stub_956""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_956")"\n"
"\t"STUB_ASM_CODE("956")"\n"

".hidden ""shared_dispatch_stub_957""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_957")"\n"
"\t"STUB_ASM_CODE("957")"\n"

".hidden ""shared_dispatch_stub_958""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_958")"\n"
"\t"STUB_ASM_CODE("958")"\n"

".hidden ""shared_dispatch_stub_959""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_959")"\n"
"\t"STUB_ASM_CODE("959")"\n"

".hidden ""shared_dispatch_stub_960""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_960")"\n"
"\t"STUB_ASM_CODE("960")"\n"

".hidden ""shared_dispatch_stub_961""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_961")"\n"
"\t"STUB_ASM_CODE("961")"\n"

".hidden ""shared_dispatch_stub_962""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_962")"\n"
"\t"STUB_ASM_CODE("962")"\n"

".hidden ""shared_dispatch_stub_963""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_963")"\n"
"\t"STUB_ASM_CODE("963")"\n"

".hidden ""shared_dispatch_stub_964""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_964")"\n"
"\t"STUB_ASM_CODE("964")"\n"

".hidden ""shared_dispatch_stub_965""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_965")"\n"
"\t"STUB_ASM_CODE("965")"\n"

".hidden ""shared_dispatch_stub_966""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_966")"\n"
"\t"STUB_ASM_CODE("966")"\n"

".hidden ""shared_dispatch_stub_967""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_967")"\n"
"\t"STUB_ASM_CODE("967")"\n"

".hidden ""shared_dispatch_stub_968""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_968")"\n"
"\t"STUB_ASM_CODE("968")"\n"

".hidden ""shared_dispatch_stub_969""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_969")"\n"
"\t"STUB_ASM_CODE("969")"\n"

".hidden ""shared_dispatch_stub_970""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_970")"\n"
"\t"STUB_ASM_CODE("970")"\n"

".hidden ""shared_dispatch_stub_971""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_971")"\n"
"\t"STUB_ASM_CODE("971")"\n"

".hidden ""shared_dispatch_stub_972""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_972")"\n"
"\t"STUB_ASM_CODE("972")"\n"

".hidden ""shared_dispatch_stub_973""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_973")"\n"
"\t"STUB_ASM_CODE("973")"\n"

".hidden ""shared_dispatch_stub_974""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_974")"\n"
"\t"STUB_ASM_CODE("974")"\n"

".hidden ""shared_dispatch_stub_975""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_975")"\n"
"\t"STUB_ASM_CODE("975")"\n"

".hidden ""shared_dispatch_stub_976""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_976")"\n"
"\t"STUB_ASM_CODE("976")"\n"

".hidden ""shared_dispatch_stub_977""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_977")"\n"
"\t"STUB_ASM_CODE("977")"\n"

".hidden ""shared_dispatch_stub_978""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_978")"\n"
"\t"STUB_ASM_CODE("978")"\n"

".hidden ""shared_dispatch_stub_979""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_979")"\n"
"\t"STUB_ASM_CODE("979")"\n"

".hidden ""shared_dispatch_stub_980""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_980")"\n"
"\t"STUB_ASM_CODE("980")"\n"

".hidden ""shared_dispatch_stub_981""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_981")"\n"
"\t"STUB_ASM_CODE("981")"\n"

".hidden ""shared_dispatch_stub_982""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_982")"\n"
"\t"STUB_ASM_CODE("982")"\n"

".hidden ""shared_dispatch_stub_983""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_983")"\n"
"\t"STUB_ASM_CODE("983")"\n"

".hidden ""shared_dispatch_stub_984""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_984")"\n"
"\t"STUB_ASM_CODE("984")"\n"

".hidden ""shared_dispatch_stub_985""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_985")"\n"
"\t"STUB_ASM_CODE("985")"\n"

".hidden ""shared_dispatch_stub_986""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_986")"\n"
"\t"STUB_ASM_CODE("986")"\n"

".hidden ""shared_dispatch_stub_987""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_987")"\n"
"\t"STUB_ASM_CODE("987")"\n"

".hidden ""shared_dispatch_stub_988""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_988")"\n"
"\t"STUB_ASM_CODE("988")"\n"

".hidden ""shared_dispatch_stub_989""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_989")"\n"
"\t"STUB_ASM_CODE("989")"\n"

".hidden ""shared_dispatch_stub_990""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_990")"\n"
"\t"STUB_ASM_CODE("990")"\n"

".hidden ""shared_dispatch_stub_991""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_991")"\n"
"\t"STUB_ASM_CODE("991")"\n"

".hidden ""shared_dispatch_stub_992""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_992")"\n"
"\t"STUB_ASM_CODE("992")"\n"

".hidden ""shared_dispatch_stub_993""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_993")"\n"
"\t"STUB_ASM_CODE("993")"\n"

".hidden ""shared_dispatch_stub_994""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_994")"\n"
"\t"STUB_ASM_CODE("994")"\n"

".hidden ""shared_dispatch_stub_995""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_995")"\n"
"\t"STUB_ASM_CODE("995")"\n"

".hidden ""shared_dispatch_stub_996""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_996")"\n"
"\t"STUB_ASM_CODE("996")"\n"

".hidden ""shared_dispatch_stub_997""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_997")"\n"
"\t"STUB_ASM_CODE("997")"\n"

".hidden ""shared_dispatch_stub_998""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_998")"\n"
"\t"STUB_ASM_CODE("998")"\n"

".hidden ""shared_dispatch_stub_999""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_999")"\n"
"\t"STUB_ASM_CODE("999")"\n"

".hidden ""shared_dispatch_stub_1000""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_1000")"\n"
"\t"STUB_ASM_CODE("1000")"\n"

".hidden ""shared_dispatch_stub_1001""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_1001")"\n"
"\t"STUB_ASM_CODE("1001")"\n"

".hidden ""shared_dispatch_stub_1002""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_1002")"\n"
"\t"STUB_ASM_CODE("1002")"\n"

".hidden ""shared_dispatch_stub_1003""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_1003")"\n"
"\t"STUB_ASM_CODE("1003")"\n"

".hidden ""shared_dispatch_stub_1004""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_1004")"\n"
"\t"STUB_ASM_CODE("1004")"\n"

".hidden ""shared_dispatch_stub_1005""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_1005")"\n"
"\t"STUB_ASM_CODE("1005")"\n"

".hidden ""shared_dispatch_stub_1006""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_1006")"\n"
"\t"STUB_ASM_CODE("1006")"\n"

".hidden ""shared_dispatch_stub_1007""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_1007")"\n"
"\t"STUB_ASM_CODE("1007")"\n"

".hidden ""shared_dispatch_stub_1008""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_1008")"\n"
"\t"STUB_ASM_CODE("1008")"\n"

".hidden ""shared_dispatch_stub_1009""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_1009")"\n"
"\t"STUB_ASM_CODE("1009")"\n"

".hidden ""shared_dispatch_stub_1010""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_1010")"\n"
"\t"STUB_ASM_CODE("1010")"\n"

".hidden ""shared_dispatch_stub_1011""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_1011")"\n"
"\t"STUB_ASM_CODE("1011")"\n"

".hidden ""shared_dispatch_stub_1012""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_1012")"\n"
"\t"STUB_ASM_CODE("1012")"\n"

".hidden ""shared_dispatch_stub_1013""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_1013")"\n"
"\t"STUB_ASM_CODE("1013")"\n"

".hidden ""shared_dispatch_stub_1014""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_1014")"\n"
"\t"STUB_ASM_CODE("1014")"\n"

".hidden ""shared_dispatch_stub_1015""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_1015")"\n"
"\t"STUB_ASM_CODE("1015")"\n"

".hidden ""shared_dispatch_stub_1016""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_1016")"\n"
"\t"STUB_ASM_CODE("1016")"\n"

".hidden ""shared_dispatch_stub_1017""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_1017")"\n"
"\t"STUB_ASM_CODE("1017")"\n"

".hidden ""shared_dispatch_stub_1018""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_1018")"\n"
"\t"STUB_ASM_CODE("1018")"\n"

".hidden ""shared_dispatch_stub_1019""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_1019")"\n"
"\t"STUB_ASM_CODE("1019")"\n"

".hidden ""shared_dispatch_stub_1020""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_1020")"\n"
"\t"STUB_ASM_CODE("1020")"\n"

".hidden ""shared_dispatch_stub_1021""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_1021")"\n"
"\t"STUB_ASM_CODE("1021")"\n"

".hidden ""shared_dispatch_stub_1022""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_1022")"\n"
"\t"STUB_ASM_CODE("1022")"\n"

".hidden ""shared_dispatch_stub_1023""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_1023")"\n"
"\t"STUB_ASM_CODE("1023")"\n"

".hidden ""shared_dispatch_stub_1024""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_1024")"\n"
"\t"STUB_ASM_CODE("1024")"\n"

".hidden ""shared_dispatch_stub_1025""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_1025")"\n"
"\t"STUB_ASM_CODE("1025")"\n"

".hidden ""shared_dispatch_stub_1026""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_1026")"\n"
"\t"STUB_ASM_CODE("1026")"\n"

".hidden ""shared_dispatch_stub_1027""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_1027")"\n"
"\t"STUB_ASM_CODE("1027")"\n"

".hidden ""shared_dispatch_stub_1028""\n"
STUB_ASM_ENTRY("shared_dispatch_stub_1028")"\n"
"\t"STUB_ASM_CODE("1028")"\n"

);
#undef MAPI_TMP_STUB_ASM_GCC
#endif /* MAPI_TMP_STUB_ASM_GCC */
